一、下载安装HTMLTestRunner
对于测试人员来而言,测试工作一般不容易评价,也就是说测试人员工作的价值不好衡量,测试需要一个展示成果的平台或者工具,而漂亮的测试报告就是这样一个衡量测试成果的工具。HTMLTestRunner易于生成HTML测试报告,它是Python标准库的unittest模块的扩展。
下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
这个扩展非常简单,只有一个HTMLTestRunner.py文件。安装也非常的简单,只需要将其复制到python安装目录下即可。若不知道python的安装目录,可以通过命令来快速查询,方法如下所示:
二、怎么查看python的安装路径
1、在windows系统下,用cmd命令就可以查看python路劲
where python
2、在linux系统下,首先打开终端,输入python命令,进入python的交互模式,通过sys.path可以查看到python的安装目录
sys.path
3、找到python的安装路径后,再把HTMLTestRunner.py文件复制到指定目录下即可。
三、修改HTMLTestRunner.py
为什么要修改HTMLTestRunner.py呢?这是由于HTMLTestRunner.py是基于python2开发,为了使其支持python3的环境,需要对其内容进行部分修改。首先通过编辑器打开HTMLTestRunner.py文件。
#第94行
import StringIO 修改为:import io
#第539行
self.outputBuffer = StringIO.StringIO() 修改为:self.outputBuffer = io.StringIO()
#第631行
print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)修改为:print(sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime))
#第642行
if not rmap.has_key(cls):修改为:if not cls in rmap:
#第766行
uo = o.decode('latin-1')修改为:uo = o
#第772行
ue = e.decode('latin-1')修改为:ue = e
四、生成HTML测试报告实战
这里以打开百度,并输入查询数据为例,进行自动化测试,最终生成测试报告。首先要配置好chromedriver环境,然后再利用python第三方库selenium进行ui自动化测试。
1、配置chromedriver路径
chromedriver.exe下载地址:http://chromedriver.storage.googleapis.com/index.html
将下载好的chromedriver.exe放在C:\Program Files (x86)\Google\Chrome\Application路径下,并配置好环境变量:
右键点击我的电脑----->属性--->高级系统设置---->环境变量------>在path路径下添加上文中浏览器“C:\Program Files (x86)\Google\Chrome\Application”
或者在脚本中注明浏览器驱动的位置
driver_path = r'D:\python\chromedriver.exe'
self.driver = webdriver.Chrome(executable_path=driver_path)
2、自动化测试实例
from selenium import webdriver
import unittest
from HTMLTestRunner import HTMLTestRunner
import time
class Baidu(unittest.TestCase):
def setUp(self):
'''测试准备工作'''
self.driver = webdriver.Chrome()#初始化浏览器,注意要配置Chromedriver路径,比如:将chrome.exe放在C:\Program Files (x86)\Google\Chrome\Application路径下
self.driver.maximize_window()
self.driver.implicitly_wait(10)#隐形等待,隐形等待时我们不会感觉到真的过了10秒,它会等到当前页面元素加载完毕。
self.base_url = 'https://www.baidu.com/'
def test_baidu_search(self):
'''测试百度搜索'''
self.driver.get(self.base_url)
self.driver.find_element_by_id('kw').clear()
self.driver.find_element_by_id('kw').send_keys('测试工程师')
self.driver.find_element_by_id('su').click()
time.sleep(1)# 显性等待,会明显感觉到程序等待的时间长度,比如:time.sleep(2),会明显感觉程序等待了2秒钟。
def tearDown(self):
'''资源释放'''
self.driver.quit()
if __name__ == '__main__':
testunit = unittest.TestSuite()#初始化测试用例集合对象,构建测试套件
testunit.addTest(Baidu("test_baidu_search"))#把测试用例加入到测试用力集合中去,将用例加入到检测套件中
fp = open('./result.html','wb')#定义测试报告存放路径
runner = HTMLTestRunner(stream=fp,title='百度搜索测试报告',description='用例执行情况')#定义测试报告
runner.run(testunit)#执行测试用例
fp.close()
结果:
注意:
使用pycharm时无法生成测试报告的问题在用Ctrl+Shift+F10执行脚本后,发现没有在本地生成测试报告,经分析,程序执行unittest后,没有再执行后面的程序,也就没有再生存测试报告,正确的方法是Alt+Shift+F10,然后在点击要执行的脚本名称即可。
- 这是Ctrl+Shift+F10执行脚本时,选择执行的方式:
- 这是Alt+Shift+F10执行脚本时,选择执行的方式: