软件测试之定制unittest测试报告

基于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%无套路免费领取】

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小怡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值