为了便于测试脚本的维护,以及更多测试用例的管理,于是根据上次学习的HTMLTestRunner生成的测试报告,今天将对其进行整理。我们之前使用 TestSuite 只是在一个.py 文件里添加多个测试用例,那么我们可以法把多个.py 文件中的用例通过测试套件来组织。
测试套件结构如图所示(在此,谢谢虫师博客的分享):

测试案例:
1.通过加载baidu模块,sogou模块以及PythonOrg模块
2.生成测试报告
为此,本文的实际用例如下:

3.根据需要,写好测试脚本。待完成后的测试脚本分别另存为文件
(TestBaidu.py,TestSogou.py,PythonOrg.py,All_HTMLTest.py)将其放在同一目录下,然后运行All_HTMLTest.py的脚本。

测试脚本:
TestBaidu.py
测试搜索和链接的控件。

测试搜索和链接的控件。

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException import unittest
import time
import re
import HTMLTestRunner
class TestBaidu(unittest.TestCase):
def setUp(self):
self.browser=webdriver.Chrome()
self.browser.implicitly_wait(30)
self.base_url="http://www.baidu.com"
self.verficationErrors=[]
self.accept_next_alert=True
def test_search(self):
browser = self.browser
browser.get(self.base_url+'/')
browser.find_element_by_id("kw").clear()
browser.find_element_by_id("kw").send_keys("自动化测试")
browser.find_element_by_id("su").click()
time.sleep(2)
browser.find_element_by_id("su").submit()
time.sleep(3)
title=browser.title
print ("title is %s"%title)
time.sleep(5)
browser.close()
def test_link(self):
browser=self.browser
browser.get(self.base_url+'/')
browser.find_element_by_link_text("贴吧").click()
time.sleep(5)
browser.close()
def tearDown(self):
self.browser.quit()
self.assertEqual([],self.verficationErrors)
if __name__=="__main__":
unittest.main()

TestSogou.py
测试搜索,微信link以及设置链接的控件。

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException import unittest
import time
import re
import HTMLTestRunner class TestSogou(unittest.TestCase):
def setUp(self):
self.browser=webdriver.Chrome()
self.browser.implicitly_wait(30)
self.base_url="https://www.sogou.com"
self.verficationErrors=[]
self.accept_next_alert=True
def test_search(self):
browser=self.browser
browser.get(self.base_url+'/')
browser.maximize_window()
keyworld=browser.find_element_by_name("query")
keyworld.send_keys("Selenium Python")
browser.find_element_by_id("stb").click()
time.sleep(3)
browser.close()
def test_weixin(self):
browser=self.browser
browser.get(self.base_url+'/')
browser.maximize_window()
browser.find_element_by_link_text("微信").click()
time.sleep(2)
browser.close()
def test_config(self):
browser=self.browser
browser.get(self.base_url+'/')
browser.maximize_window()
browser.find_element_by_class_name.
("s_usersetting").click()
time.sleep(2)
browser.close()
def tearDown(self):
self.browser.quit()
self.assertEqual([],self.verficationErrors) if __name__=="__main__":
unittest.main()

PythonOrg.py
测试搜索和link控件。

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
class PythonOrgSearch(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
#这样可以根据需要自动加载时间
self.driver.implicitly_wait(30)
self.base_url="http://www.python.org"
self.verficationErrors=[]
self.accept_next_alert=True
def test_search(self):
driver = self.driver
driver.get(self.base_url+"/")
self.assertIn("Python", driver.title)
elem = driver.find_element_by_name("q")
elem.send_keys("selenium")
elem.send_keys(Keys.RETURN)
#判断title中是否有Welcome字段
self.assertIn("Welcome", driver.title)
driver.close()
def test_download(self):
driver = self.driver
driver.get(self.base_url+"/")
self.assertIn("Python", driver.title
link=driver.find_element_by_link_text("Downloads")
link.click()
time.sleep(3)
driver.close()
def tearDown(self):
self.driver.quit()
self.assertEqual([],self.verficationErrors)
if __name__ == "__main__":
unittest.main()

All_HTMLTest.py
此.py加载了TestBaidu.py,TestSogou.py,PythonOrg.py

#coding=utf-8
import unittest
#加载模块TestBaidu,TestSogou,PythonOrg
import TestSogou
import PythonOrg
import TestBaidu import time
import HTMLTestRunner testunit=unittest.TestSuite()
#将测试用例加入到测试容器中
testunit.addTest(unittest.makeSuite(TestSogou.TestSogou))
testunit.addTest(unittest.makeSuite(PythonOrg.PythonOrgSearch))
testunit.addTest(unittest.makeSuite(TestBaidu.TestBaidu)) #runner=unittest.TextTestRunner()
#runner.run(testunit) #导入当前时间,使用time模块的相关函数
now=time.strftime("%Y-%m-%d_%H-%M-%S",time.localtime())
#将测试结果写入到result.html中
fp=open(now+"result.html",'wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title='Test Report',description=u'Result:')
runner.run(testunit)
fp.close()

F5运行,得到:

C:\Python34,得到:

打开,此文件得到:

对于错误的case,可以根据实际情况再做讨论。
这样一来,对于脚本的维护便利了很多。只需要根据需要,改动相关模块的脚本即可,或者根据需要添加需要的模块的脚本,然后加载到All_HTMLTest.py中去。

应用HTMLTestRunner整合测试报告的更多相关文章

  1. HTMLTESTRunner自动化测试报告增加截图功能

    我们都知道HTMLTESTRunner自动化测试报告,是Unittest单元测试框架报告,那么在做ui测试的时候就有点不适用了. 我们需要出错截图功能. 以下是我改的,增加了截图功能,先展示界面,再展 ...

  2. selenium自动化测试之整合测试报告

    selenium自动化测试之整合测试报告 标签(空格分隔): 整合报告 如下截图我们添加一个文件叫做:latest_report.py文件, import time import os import ...

  3. Pycharm使用python3无法通过HTMLTestRunner生成测试报告《转载》

    Pycharm使用python3无法通过HTMLTestRunner生成测试报告: https://blog.csdn.net/weixin_38981172/article/details/8238 ...

  4. 转HTMLTestRunner 生成测试报告

    1.HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展.它生成易于使用的 HTML 测试报告 1>下载HTMLTestRunner.py文件,地址为: h ...

  5. HTMLTestRunner 自动化测试报告

    http://tungwaiyip.info/software/HTMLTestRunner.html下载,将下载后的文件放在python的Lib目录下 # -*- coding:utf-8 -*- ...

  6. Python+Selenium+Unittest+HTMLTestRunner生成测试报告+发送至邮箱,记一次完整的cnblog登录测试示例,

    测试思路:单个测试集.单个测试汇成多个测试集.运行测试集.生成测试报告.发送至邮箱. 第一步:建立单个测试集,以cnblog登录为例. 测试用例: cnblog的登录测试,简单分下面几种情况:(1)用 ...

  7. Python htmlTestRunner生成测试报告Demo

    #该代码段是ReadTxt_demo.py 的代码,用户读取txt 文件中的用户信息. #ReadTxt_demo.py def readTxt(filePath): fo = open(filePa ...

  8. Python2 HTMLTestRunner自动化测试报告美化

    python2 的测试报告美化,需要的同学直接用 #coding=utf-8 """ A TestRunner for use with the Python unit ...

  9. Python3 HTMLTestRunner自动化测试报告美化

    # FileName : MyHTMLTestRunner.py # Author : wangyinghao # DateTime : 2019/1/9 21:04 # SoftWare : PyC ...

随机推荐

  1. Codeforces 869C The Intriguing Obsession:组合数 or dp

    题目链接:http://codeforces.com/problemset/problem/869/C 题意: 红色.蓝色.紫色的小岛分别有a,b,c个. 你可以在两个不同的岛之间架桥,桥的长度为1. ...

  2. 批量反编译class文件

    首先得进入jad的路径中,一般都放在jdk的安装目录的bin中 进入到该目录中,否则无法使用jad命令. jad -o -r -d F:\src -s java F:\classes\**\*.cla ...

  3. 动态链接库(dll)文件的动态调用(使用动态链接库,解析Wis文件--测井数据文件的一种)

    在画出井眼轨迹后,老师又给了三口井的数据,不过这次给的数据是WIS格式的,可以使用一个动态链接库进行解析,解析结束后会生成一个固定格式的txt文件,然后再读取txt文件,画井眼轨迹. 学长给了一个可以 ...

  4. phalcon查询:单条查询,多条查询,多表查询

    单条查询, $order = \OrderMain::findFirst("oid='" . $oid . "'"); 多条查询, $shop = \Order ...

  5. Unity3D-UGUI图集打包与动态使用(TexturePacker)

    参考地址: http://blog.csdn.net/cjsen/article/details/52487706 今天做项目大佬看我在做图集,就跟我说可以用工具打包图集,也就是TexturePack ...

  6. 《Advanced Bash-scripting Guide》学习(十):利用whois查询域名信息

    本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 Example 4-6. wh,whois域名查询 #!/bin/bash #做 ...

  7. c、rust、golang、swift性能比较

    mac 计算速度视觉判断是(由好到差):c > rust > swift > golang 内存开销在mac上是(由好到差):c > rust > golang > ...

  8. Vue中mixin的用法

    在项目中我们经常会遇到多个组件调用同一个方法的问题,为了避免每次都在.vue文件中定义并调用,我们可采用vue的mixin的用法: 具体使用如下: 我们需要在main.js中引入mixins文件夹下的 ...

  9. C# GDI+编程

    窗口刷新的时候,会产生Paint事件,那么我们给这个事件添加一个处理函数.然后在这个函数里画图.就能保证所画的图不被刷新掉, 它可以总是显示.Paint事件对应的委托是:public delegate ...

  10. (转)libcurl库使用方法,好长,好详细。

    一.ibcurl作为是一个多协议的便于客户端使用的URL传输库,基于C语言,提供C语言的API接口,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP ...