【Web自动化测试】如何生成高质量的测试报告

运行了所有测试用例,控制台输入的结果,如果很多测试用例那也不能够清晰快速的知道多少用例通过率以及错误情况。

web自动化测试实战之批量执行测试用例场景: 运行 AllTest.py 文件后得到的测试结果不够专业,无法直观的分析测试结果,我们能否有一个报告直接展示我测试用例运行的测试结果呢。答案是,当然有。

这里我们需要借助第三方库生成HTML格式的测试报告。这里用到的库是 HTMLTestRunner.py / HTMLTestReportCN.py 文件存放路径为 Python安装路径的Lib子文件夹中例如:F:\python3\Lib 如下图,那么当我们将包成功导入到LIb目录下后,我们可以在 AllTest.py 代码开头直接引用我们对应的报告格式包。

备注: HTMLTestRunner.py HTMLTestReportCN.py 一会最后小编会将包打包好推送给大家,都是基于Python3源码都根据python3修改支持使用的,2个包用法是一致,只是展示报告的风格不同一会儿小编会给你介绍大概样式,各位可以喜欢那种就引用哪种。

现在我们的包导入进来,接着我们要做的是生成的报告我们也要创建一个目录存在报告文件例如:'F:\\python3\\report' ,好报告的包导入了,存放报告的目录我们也创建好了,那么我们来看看基于上篇 AllTest.py 执行所有测试用例直接输出到报告怎么写

01.第一种我们引用的 HTMLTestReportCN.py 如下代码

# -*-coding=utf-8-*-
import unittest
import os, time
import HTMLTestReportCN
 
# 用例路径
case_path = 'F:\\python3\\python_code\\test_case_suite'
 
 
def AllTest():
    '''获取所有的测试模块'''
    suite = unittest.TestLoader().discover(
        start_dir=os.path.dirname(case_path),
        pattern='case*.py',
        top_level_dir=None
    )
    return suite
 
 
def getNowTime():
    '''获取当前的时间'''
    return time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
 
 
def run():
    fileName = os.path.join('F:\\python3\\report',
                            getNowTime() + 'report.html')
 
    fp = open(fileName,'wb')
    runner = HTMLTestReportCN.HTMLTestRunner(
        stream=fp,
        title=u'项目测试环境单元测试报告',
        description=u'注:为减少时间人力成本,提高转测质量,特每次对测试环境待发布的代码会对基础功能模块进行单元测试,进一步的提高测试效率,如下为用例执行结果,请查阅!')
 
    runner.run(AllTest())
 
 
if __name__ == '__main__':
    run()

注解:在以上完善后的AllTest.py文件中其中导入了os,timemo模块、HTMLTestReportCN 库。getNowTime 方法用来获取当前时间,每一次生成的测试报告如果文件名称一致,由于加上了最新时间信息,便可以根据文件名称确认哪个是最新的测试报告

run 方法用来执行测试套件中的测试用例和生成测试报告。在report 文件夹下生成了最新的测试报告,report的目录如下图所示

02.第二种我们引用的 HTMLTestRunner.py 如下代码

# -*-coding=utf-8-*-
import unittest
import os, time
import HTMLTestRunner
 
# 用例路径
case_path = 'F:\\python3\\python_code\\test_case_suite'
 
 
def AllTest():
    '''获取所有的测试模块'''
    suite = unittest.TestLoader().discover(
        start_dir=os.path.dirname(case_path),
        pattern='case*.py',
        top_level_dir=None
    )
    return suite
 
 
def getNowTime():
    '''获取当前的时间'''
    return time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
 
 
def run():
    fileName = os.path.join('F:\\python3\\report',
                            getNowTime() + 'report.html')
 
    fp = open(fileName,'wb')
    runner = HTMLTestRunner.HTMLTestRunner(
        stream=fp,
        title=u'巡服带教测试环境单元测试报告',
        description=u'注:为减少时间人力成本,提高转测质量,特每次对测试环境待发布的代码会对基础功能模块进行单元测试,进一步的提高测试效率,如下为用例执行结果,请查阅!')
 
    runner.run(AllTest())
 
 
if __name__ == '__main__':
    run()

查看报告输出样式

以上就是web自动化批量执行用例之后如果生成报告文件

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文心一言 VS 讯飞星火 VS chatgpt (133)-- 算法导论11.2 5题

五、用go语言,假设将一个具有n个关键字的集合存储到一个大小为 m 的散列表中。试说明如果这些关键字均源于全域U,且|U|>nm,则U 中还有一个大小为n 的子集,其由散列到同一槽位中的所有关键字构成,使得链接法散列的查…

数据结构:树的存储结构(孩子兄弟表示法,树和森林的遍历)

目录 1.树的存储结构1.双亲表示法(顺序存储)1.优缺点 2.孩子表示法(顺序链式存储)3.孩子兄弟表示法(链式存储)4.森林与二叉树的转换 2.树的遍历1.先根遍历2.后根遍历3.层序遍历 3.森林的遍历1.先序遍历2.中…

接口自动化测试之Requests模块详解

Python中,系统自带的urllib和urllib2都提供了功能强大的HTTP支持,但是API接口确实太难用了。Requests 作为更高一层的封装,在大部分情况下对得起它的slogan——HTTP for Humans。 让我们一起来看看 Requests 这个 HTTP库在我们接口自动化测试…

阿里云ACK(Serverless)安装APISIX网关及APISIX Ingress Controller

在k8s上安装apisix全家,通过helm安装很简单,但是会遇到一些问题。 安装 首先登录阿里云控制台,在ACK集群详情页,进入CloudShell,执行下面helm命令安装apisix、apisix-ectd、apisix-dashboard和apisix-ingress-contro…

springboot的配置信息的设置和读取(application.properties/application.yml)

springboot提供了两种配置信息的文件格式,application.properties和application.yml,基于直接明了,使用方便和高效的前提下下面的配置均采用yml格式配置, 注意 yml采用缩减方式来排列键后面紧跟冒号,然后空格&#x…

git的分支及标签使用及情景演示

目录 一. 环境讲述 二.分支 1.1 命令 1.2情景演练 三、标签 3.1 命令 3.2 情景演示 ​编辑 一. 环境讲述 当软件从开发到正式环境部署的过程中,不同环境的作用如下: 开发环境:用于开发人员进行软件开发、测试和调试。在这个环境中…

揭秘:车企如何利用5R模式在数位行销领域取得突破

01 车企进入“大逃杀”时间 汽车行业一边是出口“捷报频传”,一边是内销“压力山大”。 内销的难,在之前中部某省的政府“骨折价”补贴掀起的“价格战”中已经可见一斑。这一颇具标志性的事件反映了汽车行业,尤其是燃油车行业正处在巨大的转…

python实现一个简介桌面倒计时小程序

本章内容主要是利用python制作一个简单的桌面倒计时程序,包含开始、重置 、设置功能。 目录 一、效果演示 二、程序代码 一、效果演示 二、程序代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ author: Roc-xb """import tkin…

HslCommunication模拟西门子读写数据

导入HslCommunication C#端代码(上位机) 这里要注意的是上位机IP用的当前电脑的IP。 using HslCommunication; using HslCommunication.Profinet.Siemens; using System; using System.Collections.Generic; using System.ComponentModel; using Syste…

Linux之基础开发工具gdb调试器的使用(三)

文章目录 一、Linux调试器-gdb使用1、安装gdb2、背景3、Debug和release4、区分Debug和release 二、Linux调试器-gdb命令演示1、显示指定行之后的代码(自动记录最后一条指令)2、断点1、打印断点2、查看断点3、删除断点4、使能(禁用/开启&#…

基于C#+WPF编写的调用讯飞星火大模型工具

工具源码:https://github.com/lishuangquan1987/XFYun.SparkChat 工具效果截图: 支持流式输出: 其中ApiKey/ApiSecret/AppId需要自己到讯飞星火大模型官网去注册账号申请,免费的。 申请地址:https://xinghuo.xfyun.cn/ 注册之…

Leetcode—2469.温度转换【简单】

2023每日刷题(二十六) Leetcode—2469.温度转换 实现代码 /*** Note: The returned array must be malloced, assume caller calls free().*/ double* convertTemperature(double celsius, int* returnSize) {double* ans (double *)malloc(sizeof(do…

ValueError: ‘x‘ and ‘y‘ must have the same size

ValueError: ‘x’ and ‘y’ must have the same size 问题描述 出错代码 axes[0].errorbar(dates_of_observation, observed_lai, yerrstd_lai, fmt"o")X是观测的日期,16天,而且数据也是对应的16个,为什么不对应呢?…

字节面试:请说一下DDD的流程,用电商系统为场景

说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业字节、如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 谈谈你的DDD落地经验? 谈谈你对DDD的理解&…

C++语法---模板进阶知识

绪论​ “那些看似不起波澜的日复一日,会在某天让你看到坚持的意义。”本篇文章主要写到非类型的模板参数、模板的特化、模板的分离编译问题、以及适配器和仿函数的使用讲解,在之前已经将模板的基本使用进行了学习(可见c模板)话不…

fastANI-基因组平均核酸一致性(ANI)计算

文章目录 简介安装使用Many to Man-使用基因组路径作为输入One to One 结果其他参数说明可视化两个基因组之间的保守区域并行化 简介 FastANI 是为快速计算全基因组平均核苷酸同一性(Average Nucleotide Identity,ANI)而开发的,无…

【学习笔记】Understanding LSTM Networks

Understanding LSTM Networks 前言Recurrent Neural NetworksThe Problem of Long-Term DependenciesLSTM Networks The Core Idea Behind LSTMsStep-by-Step LSTM Walk ThroughForget Gate LayerInput Gate LayerOutput Gate Layer Variants on Long Short Term MemoryConclus…

java--JDBC学习

文章目录 今日内容0 复习昨日1 JDBC概述2 JDBC开发步骤2.1 创建java项目2.2 导入mysql驱动包2.2.1 复制粘贴版本2.2.2 idea导入类库版本 2.3 JDBC编程 3 完成增删改3.1 插入3.2 更新3.3 删除 4 查询结果集ResultSet【重要】5 登录案例【重要】6 作业 今日内容 0 复习昨日 1 JDB…

二十五、城市建成区结果制图——复杂图的制作

一、前言 有些时候看到一些参考文献中有些很复杂的图,例如多幅合并在一起,其实这种图本质上就是单一的图合并在一起,然后将其导出即可。 二、具体操作 其实对于制图必备要素的添加就不过多介绍,主要介绍有什么办法保持图形之间一致性,例如,其图例、指北针、比例尺统一…

vColorPicker与vue3-colorPicker——基于 Vue 的颜色选择器插件

文章目录 前言样例特点 一、使用步骤?1. 安装2.引入3.在项目中使用 vcolorpicker 二、选项三、事件四、问题反馈问题所在安装引入例子效果图 前言 vColorPicker——官网 vColorPicker——GitHub 样例 vColorPicker是基于 Vue 的一款颜色选择器插件,仿照…