自动化发邮件功能也是自动化测试项目中的重要需求之一。在自动化脚本运行完成之后,邮箱就可以收到最新的测试报告结果,把这种主动的且不及时的查看变成被动且及时的查收,就方便多了。
首先我们需要一份漂亮且通俗易懂的测试报告来展示自动化测试成果, HTMLTestRunner
是 python
标准库 unittest
单元测试框架的一个扩展,它生成易于使用的HTML测试报告。
下载地址: http://tungwaiyip.info/software/HTMLTestRunner.html
这个扩展非常简单,只有一个.py文件,选中后直接下载到本地即可。安装方法也很简单,将其复制到python的安装目录下即可。
windows:将下载的文件保存在../Python35/Lib目录下
Linux(ubuntu):以root身份将HTMLTestRunner.py复制到/usr/local/Python3.7/dist-packages/ 目录下
修改HTMLTestRunner
#第 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测试报告
from selenium import webdriverimport unittestfrom HTMLTestRunner import HTMLTestRunnerclass Baidu(unittest.TestCase): def setUp(self): self.driver=webdriver.Firefox() self.driver.implicitly_wait(10) self.base_url="https://www.baidu.com" def test_baidu_search(self): driver=self.driver driver.get(self.base_url) driver.find_element_by_id("kw").send_keys("HTMLTestRunner") driver.find_element_by_id("su").click() 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() # 关闭报告文件
代码分析
首先,将HTMLTestRunner模块用import导入进来
其次,通过open()方法以二进制写模式打开当前目录下的result.html,如果没有,则自动创建该文件。
接着,调用HTMLTestRunner模块下的HTMLTestRunner类。stream指定测试报告文件,title用于定义测试报告的标题,description用于定义测试报告的副标题。
最后,通过HTMLTestRunner的run()方法来运行测试套件中所组装的测试用例。最后通过close()关闭测试报告文件。
新闻热点
疑难解答