当前位置: 首页 > news >正文

【python实操】python小程序之测试报告

引言

python小程序之测试报告

文章目录

  • 引言
  • 一、测试报告
    • 1.1 概念
      • 1.1.1 使用Pytest和Allure生成测试报告
      • 1.1.2 使用unittest和HTMLTestRunner生成测试报告
      • 1.1.3 总结
    • 1.2 题目
    • 1.3 代码
    • 1.3 代码解释
  • 二、思考

一、测试报告

1.1 概念

python生成测试报告,常用的方法包括使用Pytest结合Allure工具,以及利用unittest框架配合HTMLTestRunner等

1.1.1 使用Pytest和Allure生成测试报告

前提准备

  • 安装Pytest和Allure:pip install pytest allure-pytest
    步骤
  1. 编写测试用例:使用Pytest的断言语句来验证代码的输出是否符合预期
  2. 运行Pytest并生成Allure报告
    • 运行命令:pytest --alluredir=allure-results
    • 该命令将执行所有测试用例,并将结果存储在allure-results目录中
    • 同时,它还会生成一个Allure报告的HTML文件,可以在浏览器中查看

1.1.2 使用unittest和HTMLTestRunner生成测试报告

  1. 使用HTMLTestRunner生成HTML测试报告
    • HTMLTestRunnerunittest模块的一个扩展,可以用来生成网页版的测试报告
    • 首先,需要下载HTMLTestRunner.py文件,并将其保存在Python安装路径下的lib文件夹或项目的子包中
    • 在python代码中通过import HTMLTestRunner导入后即可使用
    • 常用的参数包括stream(配置测试报告要保存的文件路径)、title(测试报告标题)和description(测试报告的描述信息)
  2. 使用BeautifulReport库生成测试报告
    • BeautifulReport是一个用于unittest自动化测试的可视化报告工具,它能将测试结果以美观、易于理解的方式呈现出来
    • 您可以直接在Python代码中使用import BeautifulReport导入这个库,然后使用其提供的功能来生成测试报告
  3. 基本unittest用法
    • unittest是python自带的一个单元测试框架,您可以使用它来组织、执行和生成测试报告
    • 创建一个继承自unittest.TestCase的类,并在其中定义以test开头的方法来代表测试用例
    • 执行测试时,可以使用unittest.main()函数来运行这些测试用例,并生成相应的报告

1.1.3 总结

以上方法均可用于python自动化测试中生成详细的测试报告,帮助更好地理解测试结果并进行缺陷跟踪

1.2 题目

如何生成一个可视化的测试报告

1.3 代码

import unittest
from HTMLTestRunner import HTMLTestRunner# 定义测试用例
class TestStringMethods(unittest.TestCase):def test_upper(self):self.assertEqual('foo'.upper(), 'FOO')def test_isupper(self):self.assertTrue('FOO'.isupper())self.assertFalse('Foo'.isupper())def test_split(self):s = 'hello world'self.assertEqual(s.split(), ['hello', 'world'])# 检查s.split fails when the separator is not a stringwith self.assertRaises(TypeError):s.split(3)# 构建测试套件
def suite():suite = unittest.TestSuite()suite.addTest(TestStringMethods('test_upper'))suite.addTest(TestStringMethods('test_isupper'))suite.addTest(TestStringMethods('test_split'))return suiteif __name__ == '__main__':# 运行测试套件并生成HTML报告with open('TestReport.html', 'wb') as report_file:runner = HTMLTestRunner(stream=report_file,title='Test Report',description='Example test report generated by HTMLTestRunner.')runner.run(suite())

输出结果:
在这里插入图片描述
测试报告:
在这里插入图片描述

1.3 代码解释

代码使用unittest框架和HTMLTestRunner库来定义和运行测试用例,并生成一个HTML格式的测试报告

import unittest
from HTMLTestRunner import HTMLTestRunner
  • 导入unittest模块,它提供了用于编写和运行测试的框架
  • 导入HTMLTestRunner,这是一个第三方库,用于生成HTML格式的测试报告
# 定义测试用例
class TestStringMethods(unittest.TestCase):
  • 定义一个名为TestStringMethods的类,它继承自unittest.TestCase。这个类将包含测试用例
    def test_upper(self):self.assertEqual('foo'.upper(), 'FOO')
  • 定义一个名为test_upper的方法,用于测试字符串的upper()方法。使用assertEqual来断言'foo'.upper()返回的值是否等于'FOO'
    def test_isupper(self):self.assertTrue('FOO'.isupper())self.assertFalse('Foo'.isupper())
  • 定义一个名为test_isupper的方法,用于测试字符串的isupper()方法。第一个断言检查'FOO'.isupper()是否返回True,第二个断言检查'Foo'.isupper()是否返回False
    def test_split(self):s = 'hello world'self.assertEqual(s.split(), ['hello', 'world'])# 检查s.split fails when the separator is not a stringwith self.assertRaises(TypeError):s.split(3)
  • 定义一个名为test_split的方法,用于测试字符串的split()方法。第一个断言检查'hello world'.split()是否返回['hello', 'world']。第二个断言使用assertRaises来检查当split()的参数不是字符串时是否抛出TypeError异常
# 构建测试套件
def suite():suite = unittest.TestSuite()suite.addTest(TestStringMethods('test_upper'))suite.addTest(TestStringMethods('test_isupper'))suite.addTest(TestStringMethods('test_split'))return suite
  • 定义一个名为suite的函数,它创建一个unittest.TestSuite实例,并将之前定义的测试用例添加到这个测试套件中
if __name__ == '__main__':# 运行测试套件并生成HTML报告with open('TestReport.html', 'wb') as report_file:runner = HTMLTestRunner(stream=report_file,title='Test Report',description='Example test report generated by HTMLTestRunner.')runner.run(suite())

二、思考

  • 当这个脚本作为主程序运行时,它将打开一个名为TestReport.html的文件,以二进制写入模式
  • 创建一个HTMLTestRunner实例,并传入文件流、报告标题和描述
  • 使用runner.run(suite())运行测试套件,并将结果写入到之前打开的文件中,从而生成HTML测试报告

相关文章:

【python实操】python小程序之测试报告

引言 python小程序之测试报告 文章目录 引言一、测试报告1.1 概念1.1.1 使用Pytest和Allure生成测试报告1.1.2 使用unittest和HTMLTestRunner生成测试报告1.1.3 总结 1.2 题目1.3 代码1.3 代码解释 二、思考 一、测试报告 1.1 概念 python生成测试报告,常用的方法包…...

【Java基础】2、Java基础语法

f2/fnf2:选中点中的文件名 ​​​​​​​ 1.注释 为什么要有注释? 给别人和以后的自己可以看懂的解释 注释含义 注释是在程序指定位置的说明性信息;简单理解,就是对代码的一种解释 注释分类 单行注释 //注释信息 多行注释…...

MATLAB基础应用精讲-【数模应用】本量利分析(Cost-Volume-Profit Analysis)

目录 前言 几个高频面试题目 本量利分析与量本利分析的区别 算法原理 发展历程 几个相关概念 什么是CVP分析 基本假设 注意事项 本量利分析的作用 基本原理 多种产品量本利分析 盈亏平衡分析 目标利润分析 敏感性分析 边际分析 本量利分析基本模型 应用场景 …...

实习冲刺Day7

算法题 合并两个有序链表 class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {for (int i 0; i<n; i) {nums1[m i] nums2[i];//直接将num2的数据插入到num1的尾部}sort(nums1.begin(), nums1.end());//排…...

《Python游戏编程入门》注-第4章1

《Python游戏编程入门》的第4章是“用户输入&#xff1a;Bomb Cathcer游戏”&#xff0c;通过轮询键盘和鼠标设备状态实现Bomb Cathcer游戏。 1 Bomb Cathcer游戏介绍 “4.1 认识Bomb Cathcer游戏”内容介绍了Bomb Cathcer游戏的玩法&#xff0c;即通过鼠标来控制红色“挡板”…...

一些硬件知识【2024/10/29】

千兆以太网有8条信号线&#xff0c;百兆以太网有4条线&#xff1a; 网络变压器构造图&#xff1a; 百兆以太网拓扑&#xff1a; BOB Smith电路&#xff1a; 【以太网接口电 路设计】https://www.bilibili.com/video/BV1i3411u7bv?vd_source3cc3c07b09206097d0d8b0aefdf07958&a…...

利用弱监督学习在全切片病理图像中检测和分型基底细胞癌|文献速递-基于生成模型的数据增强与疾病监测应用

Title 题目 Detection and subtyping of basal cell carcinoma in whole-slide histopathology using weakly-supervised learning 利用弱监督学习在全切片病理图像中检测和分型基底细胞癌 01 文献速递介绍 基底细胞癌 (BCC) 的发病率正在给病理诊断带来压力。BCC 的发病率…...

leetcode刷题笔记——15.三数之和

一、问题描述 给定一个整数数组 nums&#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]]&#xff0c;使得&#xff1a; i ! j、i ! k 且 j ! k nums[i] nums[j] nums[k] 0 需要返回所有和为 0 的三元组&#xff0c;且这些三元组不能重复。 输入输出 输入: 整…...

NLTK无法下载?

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 nltk无法下载怎么办&#xff1f;什么是NLTK&#xff1f;为什么要用NLTK&#xff1f;如何下载&#xff1f; nltk无法下载怎么办&#xff1f; 什么是NLTK&#xff1f; NLTK是学习自然…...

采用非递归快排实现找出数组中的前k个高频元素(python)

前k个高频元素 题目描述解题思路代码实现 题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 解题思路 &#xff08;1&#xff09;先对给定的列表进行…...

Java题集练习4

Java题集练习4 1 异常有什么用&#xff1f; 用来找到代码中产生的错误 防止运行出错2 异常在java中以什么形式存在&#xff1f; 异常在java中以类的形式存在&#xff0c;分为运行时异常和编译期异常&#xff0c;他们都在类Exception中3 异常是否可以自定义&#xff1f;如何自…...

sql进阶篇

1.更新记录 AC&#xff1a; update examination_info set tag replace(tag, "PYTHON", "Python") where tag "PYTHON";2.删除记录 AC&#xff1a; DELETE FROM exam_record WHERE timestampdiff(minute, start_time, submit_time) < 5AND…...

代码工艺:SQL 优化的细节

1. 巧用 limit 当出现深分页的时候&#xff0c;例如&#xff1a; select id, name, status, detail from product limit 100000, 30; 那么MySQL的执行方式为&#xff1a;一共需要查100030条数据&#xff0c;然后丢弃前面的100000条&#xff0c;只返回后面的30条数据&#xf…...

天池蚂蚁AFAC大模型挑战赛-冠军方案(含代码)

天池-蚂蚁AFAC大模型挑战赛-冠军方案 前言 ❝ 作者     彭欣怡 华东师大; 马千里 虾皮; 戎妍 港科广 说在前面     在当今信息技术迅猛发展的背景下&#xff0c;大模型技术已经成为推动人工智能领域进步的重要力量。     前段时间备受瞩目的AFAC赛题聚焦于金融对话…...

[QUIC] Packets 和 Frames 概述

Packets 和 Frames 概述 受保护的数据包 (Protected Packets) 基于不同的包类型, QUIC 使用不同等级的保护机制. Version Negotoation 包不受保护. Retry 包使用 AEAD 进行保护。 Initial 包使用 AEAD 进行保护, 但是使用的 Key 是由一个网络可见的值计算出来的。 因此 Ini…...

QT编辑框带行号

很可惜&#xff0c;qt的几个编辑框并没有相关功能。所以我们要自己实现一个。 先讲讲原理&#xff1a; QPlainTextEdit继承自QAbstractScrollArea&#xff0c;编辑发生在其viewport&#xff08;&#xff09;的边距内。我们可以通过将视口的左边缘设置一个空白区域&#xff0c;…...

Kafka认证时Successfully logged in真的认证成功了?

背景 某个应用需要配置 Kafka 集群信息&#xff0c;且需要在验证集群是否可达。基本实现思路是创建一个生产者对象&#xff0c;然后发送一条测试数据&#xff0c;调用 Producer 的 send 方法发送消息后&#xff0c;再调用 get() 方法&#xff0c;即同步发送消息&#xff0c;测…...

软考信息系统管理师,系统集成项目管理工程师,考哪一个合适?

根据2024年的考试安排&#xff0c;高级项目管理师和系统集成工程师考试改为每年一次。 2024年上半年考高级项目管理师&#xff0c;下半年考系统集成项目管理工程师。 根据这个调整&#xff0c;建议先报名5月份的高级项目管理师考试。如果通过了&#xff0c;大家都高兴&#x…...

AI学习指南自然语言处理篇-位置编码(Positional Encoding)

AI学习指南自然语言处理篇-位置编码&#xff08;Positional Encoding&#xff09; 目录 引言位置编码的作用位置编码的原理绝对位置编码相对位置编码位置编码在Transformer中的应用位置编码的意义总结 引言 在自然语言处理中&#xff0c;文本数据通常以序列的形式存在。然而…...

macOS 15 Sequoia dmg格式转用于虚拟机的iso格式教程

想要把dmg格式转成iso格式&#xff0c;然后能在虚拟机上用&#xff0c;最起码新版的macOS镜像是不能用UltraISO&#xff0c;dmg2iso这种软件了&#xff0c;你直接转放到VMware里绝对读不出来&#xff0c;办法就是&#xff0c;在Mac系统中转换为cdr&#xff0c;然后再转成iso&am…...

2003-2024年上市公司政府补助数据+stata代码

政府补助数据2003-2024 范围&#xff1a;2003 - 2024年&#xff0c;全部A股上市公司 原始数据来源于国泰安&#xff0c;有计算代码和原始数据&#xff0c;可复现出计算结果 政府补贴&#xff0c;政府补助&#xff0c;政府津贴&#xff0c;2024数据全 计算结果&#xff1a;d…...

当NB-IoT遇上同步轨道卫星:GEO场景下的定时关系增强全指南(基于3GPP Release 17最新规范)

GEO卫星场景下NB-IoT定时关系增强技术解析 1. GEO卫星通信与NB-IoT的技术融合挑战 地球静止轨道&#xff08;GEO&#xff09;卫星通信与窄带物联网&#xff08;NB-IoT&#xff09;技术的结合&#xff0c;为全球物联网覆盖提供了革命性解决方案。GEO卫星位于地球赤道上空35,786公…...

打工人必看!电脑突然罢工?阳光电脑维修上门服务救我于水火[特殊字符]

作为每天靠电脑办公的打工人&#xff0c;最崩溃的事情莫过于——电脑突然罢工&#xff0c;而手里还有紧急工作要赶&#xff01;前几天晚上加班&#xff0c;台式机突然黑屏&#xff0c;按开机键没反应&#xff0c;键盘鼠标也没亮&#xff0c;急得我差点哭出来&#xff0c;第二天…...

每日一题 力扣 3548. 等和矩阵分割 II 前缀和 哈希表 C++ 题解

文章目录题目描述思路简述代码实现复杂度分析踩坑记录题目描述 力扣 3548. 等和矩阵分割 II 示例 1&#xff1a; 输入&#xff1a; grid [[1,4],[2,3]] 输出&#xff1a; true 解释&#xff1a; 在第 0 行和第 1 行之间进行水平分割&#xff0c;结果两部分的元素和为 1 4 5…...

SEO_新手必看的SEO优化入门教程与核心方法(361 )

<h3 id"seoseo">SEO:新手必看的SEO优化入门教程与核心方法</h3> <p>在互联网时代&#xff0c;拥有一个成功的网站不仅仅是有好的设计和内容&#xff0c;还需要通过SEO&#xff08;搜索引擎优化&#xff09;来提升网站的可见性和流量。对于新手来说…...

ESP8266-ESP32 物联网开发入门

ESP8266/ESP32物联网开发入门指南 在智能家居、远程监控和工业自动化等领域&#xff0c;物联网技术正快速改变我们的生活。作为物联网开发的热门选择&#xff0c;ESP8266和ESP32凭借低成本、高性能和丰富的开发资源&#xff0c;成为初学者和工程师的首选。本文将介绍如何快速入…...

Realistic Vision V5.1 虚拟摄影棚实战:利用GitHub管理自定义模型与脚本

Realistic Vision V5.1 虚拟摄影棚实战&#xff1a;利用GitHub管理自定义模型与脚本 你是不是也遇到过这样的烦恼&#xff1f;好不容易在本地电脑上&#xff0c;用Realistic Vision V5.1模型调出了一套完美的参数组合&#xff0c;生成的人像照片质感堪比专业影棚。结果换台电脑…...

C语言标准演进实战指南:如何在现代项目中应用C11/C17/C23特性

C语言标准演进实战指南&#xff1a;如何在现代项目中应用C11/C17/C23特性 1. 为什么现代C项目需要关注新标准特性 在嵌入式系统、高性能计算和基础设施软件领域&#xff0c;C语言仍然是无可争议的王者。根据2023年TIOBE指数统计&#xff0c;C语言连续第三年蝉联最受欢迎编程语言…...

2026权威评测:盘点毕业论文AIGC免费降重神器

【CSDN 资深算法架构师 / NLP技术专栏 导读】 各位还在发际线边缘挣扎的应届生和硕博党们&#xff0c;到了2026年&#xff0c;如果你的电脑里还装着那种老掉牙的“同义词替换”降重软件&#xff0c;我劝你赶紧停手&#xff01; 最近CSDN社群里哀嚎一片&#xff1a;“知网查重过…...

别再瞎猜了!YOLOv8 模型缩放(width_multiple)与通道计算(c1,c2)的完整逻辑

YOLOv8模型通道计算与宽度系数的工程化实践指南 在移动端部署YOLOv8模型时&#xff0c;许多工程师会遇到一个典型困境&#xff1a;明明按照官方文档调整了width_multiple参数&#xff0c;却发现模型要么计算量超出预期&#xff0c;要么精度断崖式下跌。这背后其实隐藏着YOLOv8通…...