经验分享:软件测试之定制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. 增加单个用例的运行时间统计。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 786229024,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】在这里插入图片描述
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值