python修改unittestreport中的用例条数

news2024/11/20 11:46:46

背景: 自动化框架中使用yaml文件作为数据配置,使用ddt作为数据驱动来运行测试用例,由于测试用例都是基于场景去编写,目前都是一个测试类算是一条测试用例,但基于测试报告里面一个类运行的测试方法有多个,因此统计的测试用例数算的是test方法执行的次数,统计为多条

1.unittestreport的安装

pip install unittestreport

2.unittestreport的使用

编写一个run.py,将测试用例加载到suite中,使用runner运行


import unittest
import unittestreport

suite = unittest.defaultTestLoader.discover(r'D:\workspace\pytest_project\debug',pattern='huge_test*.py')

# 2、创建一个用例运行程序
runner = unittestreport.TestRunner(suite,
                                   tester='虎哥',
                                   filename="test",
                                   report_dir=".",
                                   title='自动化测试报告',
                                   desc='测试报告',
                                   templates=2
                                   )

# 3、运行测试用例
runner.run()

3.修改unittestreport中的源码,主要是testResult.py文件

在TestResult类下面添加self.fail_case=[],用来添加失败测试类

class TestResult(unittest.TestResult):
    def __init__(self):
        super().__init__()

        self.fields = {
            "success": 0,
            "all": 0,
            "fail": 0,
            "skip": 0,
            "error": 0,
            "begin_time": "",
            "results": [],
            "testClass": set()
        }
        self.sys_stdout = None
        self.sys_stderr = None
        self.outputBuffer = None
        self.fail_case = []

修改stopTestRun方法,重新定义success,fail,all的用例总数

    def stopTestRun(self, title=None):
        # self.fields['fail'] = len(self.failures)
        self.fields['error'] = len(self.errors)
        self.fields['skip'] = len(self.skipped)
        # self.fields['all'] = sum(
            # [self.fields['fail'], self.fields['error'], self.fields['skip'],     
            #self.fields['success']])
        self.fields['testClass'] = list(self.fields['testClass'])
        #修改用例总数为class的数目
        self.fields['all'] = len(list(self.fields['testClass']))
        new_list = []
        for i in self.fail_case:
            new_list.append(list(i)[0])
        #修改失败用例数为class失败的数目
        self.fields['fail'] = len(set(new_list))
        #修改成功用例数为总数-失败数
        self.fields['success'] = self.fields['all'] - self.fields['fail']

修改addFailure方法,添加self.fail_case.append(self.fields['testClass'])

    def addFailure(self, test, err):
        super().addFailure(test, err)
        self.fail_case.append(self.fields['testClass'])
        logs = []
        test.state = '失败'
        sys.stderr.write("{}执行——>【失败】\n".format(test))
        output = self.complete_output()
        logs.append(output)
        logs.extend(traceback.format_exception(*err))
        test.run_info = logs

4.如下图,执行了2个测试类,运行了4个测试方法,有1个测试方法执行失败,测试条数总数统计为2,失败数为1,成功数为1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1062180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云云耀云服务器L实例评测|部署项目管理工具 Focalboard

华为云云耀云服务器L实例评测|部署项目管理工具 Focalboard 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品优势1.3 产品规格1.4 应用场景 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Focalboard3.1 Focalboard 介绍3.2 Doc…

websocket学习笔记1

1. 知识模块一 1.1. websocket与http对比 1.1.1. http协议 主要关注:客户端->服务器(获取资源) 特点: 无状态协议,每个请求都是独立的,请求应答模式,服务端无法主动给客户端推送消息&am…

linux下的永久保存行号

linux下的永久保存行号 1.首先 这里是引用 输入命令:vi ~/.vimrc 其次 这里是引用 输入命令 set number

一款超实用的AI漫画生成器,支持9种漫画风格,无限免费使用

HI,同学们,我是赤辰,本期是赤辰第12篇AI工具类教程,文章底部准备了粉丝福利,看完可以领取!今天给大家介绍一款AI漫画生成器——AI Comic Factory,只需输入提示词,即可瞬间创造出一幅…

【torch】parameters与named_parameters的区别

【torch】parameters与named_parameters的区别 前言 为了详细的查看网络的结构参数等,因此本文研究一下 parameters()与 named_parameters 的区别。 此示例属于从 nn.Module 中继承的成员函数。函数位于:[python环境路径]/lib/python3.8/site-packages…

角谱计算时的fftshift及其原理

做一个fft运算,第一个事先用fftshift对待变换的E0进行操作,第二个没有用fftshift,第三个没有用fftshift但是进行了相位手动修正: %%用fft进行角谱传输计算 %对比fft运算与傅里叶变换(黎曼和)的区别以及修正…

Nature Machine Intelligence | “化学元素知识+功能提示”双驱动,探索分子预测新方法

论文题目:Knowledge graph-enhanced molecular contrastive learning with functional prompt 论文链接:https://doi.org/10.1038/s42256-023-00654-0 项目地址:GitHub - HICAI-ZJU/KANO: Code and data for the Nature Machine Intelligence…

光纤掺杂浓度之间的转换计算方法

掺杂浓度表示形式 掺杂浓度是光纤光学中无源或有源掺杂光纤中最重要的参数之一。在文献中可以找到许多不同的方法来表示基于原子或摩尔的掺杂浓度。 化学元素基于原子或离子的定义是非常明确的。例如原子百分比(atomic percentage,at.%)、原…

爬虫为什么需要 HTTP 代理 IP?

前言 爬虫在互联网数据采集、分析和挖掘中扮演着至关重要的角色,但是对于目标网站而言,频繁的爬虫请求可能会对其服务器产生不小的负担,严重的情况甚至会导致网站崩溃或者访问受限。为了避免这种情况的发生,同时也为了保护客户端…

如何安全驾驭物联网视频革命

相机即将连接到您附近的连接设备。来自旧手机的廉价图像传感器正在涌入市场,并将视频带入物联网 (IoT)。 吸尘器、喂鸟器、联网汽车甚至智能烤箱现在都配备了摄像头,可以识别菜肴并建议剩余的烹饪时间。这是联网设备功能的重大转变,目前全球…

EasyXnote5关于批量绘图

专栏:EasyX图形化编程 文章目录 问题引入 绘制画面批量绘图解释批量绘图使用 问题引入 之前的讲解中,我们可以发现创建的窗体在进行动画的显示时会出现闪烁现象,本节课将会一步一步探讨如何解决,可以使以后学习中的动画效果更加流…

二项分布以及实现

文章目录 前言所谓二项分布就是只会产生两种结果的概率 1.概念 前言 所谓二项分布就是只会产生两种结果的概率 1.概念 下面是一个二项分布的的theano实现 import numpy as np import theano import theano.tensor as T from theano.tensor.nnet import conv from theano.ten…

【数据结构--八大排序】之快速排序

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

MySQL——使用mysqldump备份与恢复数据

目录 1.mysqldump简介 2.mysqldump备份数据 2.1 备份所有数据库 2.2 备份一个/多个数据库 2.3 备份指定库中的指定表 3.mysqldump恢复数据 3.1 恢复数据库 3.2 恢复数据表 1.mysqldump简介 mysqldump命令可以将数据库中指定或所有的库、表导出为SQL脚本。表的结构和表中…

图像压缩:Transformer-based Image Compression with Variable Image Quality Objectives

论文作者:Chia-Hao Kao,Yi-Hsin Chen,Cheng Chien,Wei-Chen Chiu,Wen-Hsiao Peng 作者单位:National Yang Ming Chiao Tung University 论文链接:http://arxiv.org/abs/2309.12717v1 内容简介: 1)方向:…

代码随想录 Day11 二叉树 LeetCode T144,145,94 前中后序遍历 (递归解法)

题解及更详细解答来自于:代码随想录 (programmercarl.com) 前言: 递归三要素 确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返…

深度学习实战基础案例——卷积神经网络(CNN)基于MobileNetV3的肺炎识别|第3例

文章目录 前言一、数据集介绍二、前期工作三、数据集读取四、构建CA注意力模块五、构建模型六、开始训练 前言 Google公司继MobileNetV2之后,在2019年发表了它的改进版本MobileNetV3。而MobileNetV3共有两个版本,分别是MobileNetV3-Large和MobileNetV2-…

不容易解的题10.5

31.下一个排列 31. 下一个排列 - 力扣(LeetCode)https://leetcode.cn/problems/next-permutation/?envTypelist&envIdZCa7r67M会做就不算难题,如果没做过不知道思路,这道题将会变得很难。 这道题相当于模拟cpp的next_permu…

Windows系统上使用CLion远程开发Linux程序

CLion远程开发Linux程序 情景说明Ubuntu配置CLion配置同步 情景说明 在Windows系统上使用CLion开发Linux程序,安装CLion集成化开发环境时会自动安装cmake、mingw,代码提示功能也比较友好。 但是在socket开发时,包含sys/socket.h头文件时&am…

浅谈CDN内容分发与全局负载均衡

CDN简介 CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容&#xff0c…