首页 > 其他分享 >定制unittest测试报告

定制unittest测试报告

时间:2023-11-03 10:34:04浏览次数:49  
标签:__ 测试报告 HTMLTestRunner unittest suit test 定制 self

基于HTMLTestRunner的定制版本非常多,我这几天手动定制了一款,除了有不错的颜值,还提供了一些非常实用的功能。

定制unittest测试报告_html

安装

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 :是否保存最后一个结果

定制unittest测试报告_html_02

集成发邮件功能

如果你想用例运行完成之后发邮件,只需要填写邮箱信息即可。

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="[email protected]", password="123", host="smtp.126.com")
    smtp.sender(to="[email protected]", attachments=report)

SMTP类说明:

  • user 发送者邮箱帐号
  • password 发送者邮箱密码
  • host 邮箱服务器地址

sender()方法说明:

  • to 接收者邮箱
  • attachments 附件

定制unittest测试报告_用例_03

用例运行失败自动截图

如果你运行的是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报告中。

定制unittest测试报告_python_04

其他

  1. 基于jinja2开发,将要HTML代码与python代码分离。
  2. 引用了bootstrap4的模板样式库。
  3. 只支持python3.x,没有在python2下面做过测试。
  4. 其他细节优化:
    4.1. 增加了Chart环状图展示。
    4.2. 增加跳过用例统计
    4.3. 增加单个用例的运行时间统计。

标签:__,测试报告,HTMLTestRunner,unittest,suit,test,定制,self
From: https://blog.51cto.com/fnngj/8162057

相关文章

  • 软件测试报告所需周期和费用简析
    软件测试报告是在软件开发和测试过程中生成的重要文档之一。它提供了对软件系统经过全面测试后的状态和质量的详细描述,以记录软件测试的过程和结果。生成一个完整的测试报告需要根据软件项目的规模和复杂性来确定时间。较大规模和复杂的软件项目可能需要更长的时间来完成测试和生成......
  • 使用脚本整合指定文件/文件夹,执行定制化 ESLint 命令
    背景最近面对一个庞大的项目,但是只需要修改某个模块,每次都手搓命令太麻烦了,于是就想着能不能写个脚本来辅助处理这些事情。解决方案定制化一键ESLint,执行文件下载地址:https://github.com/mazeyqian/go-gin-gee/releases/tag/v1.4.0基础使用以下案例以macOS为例,其他系统......
  • Allure企业级报告定制化自定义logo,中文标题,模块名,用例名,用例详细的测试数据如用例日志
    【自定义logo】进入Allure的安装路径,找到config目录。在config目录下,找到allure.yml文件,并打开该文件。在allure.yml文件中,添加custom-logo-plugin选项。进入Allure的安装路径,找到plugins目录下的custom-logo-plugin目录。在custom-logo-plugin目录下,找到static目录,并将自己需要展......
  • AR眼镜定制开发,智能AR眼镜的安卓主板|软件
    AR眼镜定制开发是一项复杂而重要的任务。为了进行AR眼镜的定制开发,我们需要准备相关的硬件设备和软件。在硬件方面,智能AR眼镜需要配备多个传感器、显示装置和处理器等。传感器用于捕捉用户的动作和环境信息,例如摄像头、陀螺仪和加速度计等。显示装置则将虚拟信息呈现给用户,而处......
  • 安卓主板_MTK联发科安卓手机主板开发板方案定制
    安卓主板方案定制成熟的平台有:MT6761,MT6762,MT6765,MT8788,MT6785,MT8390,MT6853,MT6833,MT6877,MT6893(天玑1200),MT6983(天玑9000)联发科安卓核心板。安卓主板应用在传统智能交互设备中嵌入主板的PCBA,采用ARM应用处理器平台运行google的android智能化操作系统,面向的是特定应用领域的高性能、重......
  • Lock实现线程间定制化通信
    Lock实现线程间定制化通信案例要求三个线程,AABBCCAA线程打印5次,BB线程打印10次,CC线程打印15次代码实现importjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.Lock;importjava.util.concurrent.locks.ReentrantLock;/***@author长名06......
  • 安卓平板,学习平板、三防工业平板Android主板定制方案
    近年来,平板设备在生活和工业领域应用不断增长。学习平板和工业intelligent设备的销量都处在高速发展阶段。预计到2024年,我国平板总出货量将继续增长。安卓平板采用高度集成设计,将多媒体解码、液晶驱动、USB接口、以太网、HDMI输出、TF卡插槽、WiFi、人体感应、串口、......
  • [-005-]-Python3+Unittest+Selenium Web UI自动化测试之页面滑动
    1.上下滑动a.滑动#滑动至页面底部:js1="window.scrollTo(0,document.body.scrollHeight)"self.driver.execute_script(js1)#滑动至页面顶部:js2="window.scrollTo(0,0)"self.driver.execute_script(js2)c.纵向滚动条通过scrollBy坐标来滚动#纵向滚动条通过scr......
  • MTK联发科MT8766核心板_4G安卓手机主板开发板定制
    MT8766核心板,采用四核2G主频芯片方案,国内4G全网通。12nm先进工艺,支持Android9.0系统。GPU采用超强IMGGE8300,主频600MHz。可流畅适配大数据运算、人脸识别算法、多种识别模式。支持高速LPDDR4/X,主频高达1600MHz。支持EMMC5.1。标配WIFI802.11ac/abgn,BT5.0。支持主流音视频......
  • 干货!分享Nginx搭建web测试报告服务器的落地方案
    Nginx搭建web测试报告服务器的实现思路有这样一个需求:把自动化测试过程中生成的html测试报告能够通过浏览器直接访问查看!实现思路很简单,就是部署一个web服务器,然后把测试报告部署到web服务器的指定目录即可,然后通过http://ip:port/path/报告名称.html的形式进行访问。我们通过ngin......