基于HTMLTestRunner的定制版本非常多,我这几天手动定制了一款,除了有不错的颜值,还提供了一些非常实用的功能。
安装
github:
https://github.com/SeldomQA/HTMLTestRunner
> git clone https://github.com/SeldomQA/HTMLTestRunner
> cd HTMLTestRunner/
> python setup.py install
基本使用
基本用法与大多数定制版的报告一样。
import unittest
from TestRunner import HTMLTestRunner
class TestDemo(unittest.TestCase):
"""测试用例说明"""
def test_success(self):
"""执行成功"""
self.assertEqual(2 + 3, 5)
if __name__ == '__main__':
suit = unittest.TestSuite()
suit.addTest(TestDemo("test_success"))
report = "./result.html"
with(open(report, 'wb')) as fp:
runner = HTMLTestRunner(
stream=fp,
title='<project name>test report',
description='describe: ... ')
runner.run(suit)
HTMLTestRunner类说明:
·stream : 指定报告的路径
· title : 报告的标题
· description : 报告的描述
run()方法说明:
· suit : 运行的测试套件
用例失败重跑
报告提供了用例错误/失败重跑功能。
import unittest
from TestRunner import HTMLTestRunner
class TestDemo(unittest.TestCase):
"""测试用例说明"""
def test_success(self):
"""执行成功"""
self.assertEqual(2 + 3, 5)
def test_fail(self):
self.assertEqual(5, 6)
def test_error(self):
self.assertEqual(a, 6)
if __name__ == '__main__':
suit = unittest.TestSuite()
suit.addTest(TestDemo("test_success"))
suit.addTest(TestDemo("test_fail"))
suit.addTest(TestDemo("test_error"))
report = "./result.html"
with(open(report, 'wb')) as fp:
runner = HTMLTestRunner(stream=fp)
runner.run(suit, rerun=2, save_last_run=False)
run()方法说明:
·suit : 运行的测试套件
· rerun :重跑次数,设置为2,会在用例失败/错误后进行两次重试。
· save_last_run :是否保存最后一个结果
集成发邮件功能
如果你想用例运行完成之后发邮件,只需要填写邮箱信息即可。
import unittest
from TestRunner import HTMLTestRunner
from TestRunner import SMTP
# ...
if __name__ == '__main__':
suit = unittest.TestSuite()
# ...
report = "./result.html"
with(open(report, 'wb')) as fp:
runner = HTMLTestRunner(stream=fp)
runner.run(suit)
# 发邮件功能
smtp = SMTP(user="user@126.com", password="123", host="smtp.126.com")
smtp.sender(to="user@126.com", attachments=report)
SMTP类说明:
·user 发送者邮箱帐号
· password 发送者邮箱密码
· host 邮箱服务器地址
sender()方法说明:
· to 接收者邮箱
· attachments 附件
用例运行失败自动截图
如果你运行的是selenium/appium,那么当用例运行失败将会自动截图。
import unittest
from time import sleep
from TestRunner import HTMLTestRunner
from selenium import webdriver
class YouTest(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.driver = webdriver.Chrome()
cls.base_url = "https://www.baidu.com"
@classmethod
def tearDownClass(cls) -> None:
cls.driver.quit()
def test_success(self):
"""测试百度搜索:HTMLTestRunner """
self.driver.get(self.base_url)
self.driver.find_element_by_id("kw").send_keys("HTMLTestRunner")
self.driver.find_element_by_id("su").click()
sleep(2)
def test_error(self):
"""测试百度搜索,定位失败 """
self.driver.get(self.base_url)
self.driver.find_element_by_id("kw").send_keys("python")
self.driver.find_element_by_id("su22").click()
sleep(2)
def test_fail(self):
"""测试百度搜索,断言失败 """
self.driver.get(self.base_url)
self.driver.find_element_by_id("kw").send_keys("unittest")
self.driver.find_element_by_id("su").click()
sleep(2)
self.assertEqual(self.driver.title, "unittest")
if __name__ == '__main__':
suit = unittest.TestSuite()
suit.addTest(YouTest("test_success"))
suit.addTest(YouTest("test_error"))
suit.addTest(YouTest("test_fail"))
report = "./selenium_result.html"
with(open(report, 'wb')) as fp:
runner = HTMLTestRunner(
stream=fp,
title='Seldom自动化测试报告',
description='浏览器chrome,平台windows'
)
runner.run(suit)
报告中不需要实现任何截图的操作,会自动帮你生成截图并嵌入到HTML报告中。
其他
1. 基于jinja2开发,将要HTML代码与python代码分离。
2. 引用了bootstrap4的模板样式库。
3. 只支持python3.x,没有在python2下面做过测试。
4. 其他细节优化:
4.1. 增加了Chart环状图展示。
4.2. 增加跳过用例统计
4.3. 增加单个用例的运行时间统计。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】