Python单元测试之pytest的使用

一、前提准备
1、前提:需要安装pytest和pytest-html(生成html测试报告)

pip install pytest 和 pip install pytest-html 

安装插件:pip install 插件名

2、命名规范

 Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头的类和方法,比unittest更加严谨

Pytest: setup, setup_class 和 teardown, teardown_class 函数 ( 和 unittest 执行效果一样 ) 运行于测试方法的始末,即 : 运行一次测试函数会运行一次 setup 和 teardown 运行于测试方法的始末 , 但是不管有多少测试函数都只执行一次 setup_class 和 teardown_class


二、pytest生成自带的html测试报告
前提条件:需要下载pytest-html模块(python自带的生成测试报告模块)

pip install pytest-html

如果不安装pytest-html会报:

案例: 1)

pytest.main("模块.py")【运行指定模块下,运行所有test开头的类和测试用例】 

 pytest.main(["--html=./report.html","模块.py"])

import pytestclass Test():def test1(self):print("这是测试1")def test1(self):print("这是测试2")if __name__ == '__main__':pytest.main(["--html=./report.html", "test_004.py"])

结果:

2)运行指定模块指定类指定用例,冒号分割,并生成测试报告

pytest.main([‘--html=./report.html',‘模块.py::类::test_a_001'])

import pytestclass Test():def test1(self):print("这是测试1")def test2(self):print("这是测试2")if __name__ == '__main__':pytest.main(["--html=./report.html", "test_004.py::Test::test1"])

结果:

3)直接执行pytest.main() 【自动查找当前目录下,以test 开头的文件或者以test结尾的py文件】

pytest.main([‘--html=./report.html'])

语句: pytst.main(['-x','--html=./report.html','t12est000.py'])

-x出现一条测试用例失败就退出测试 
-s:显示print内容


三、pytest运行方式
. 点号,表示用例通过 
F 表示失败 Failure 
E 表示用例中存在异常 Error


四、allure  
Allure是一款轻量级并且非常灵活的开源测试报告框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成  

1、Allure常用的几个特性

@allure.feature # 用于描述被测试产品需求

@allure.story # 用于描述 feature 的用户场景,即测试需求

with allure.step (): # 用于描述测试步骤,将会输出到报告中

allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据,截图等

案例1:关于pytest与Allure生成html测试用例 rr.csv

2,3,5
5,6,11

readCsv

import csv  # 导入csv模块class ReadCsv():def read_csv(self):item = []  # 定义一个空列表c = csv.reader(open("../dataDemo/rr.csv", "r"))  # 得到csv文件对象for csv_i in c:item.append(csv_i)  # 将获取的数据添加到列表中return itemr = ReadCsv()print(r.read_csv())

开发代码:

class Cale():def jia(self,a,b):c=a+breturn cdef jian(self,a,b):c=a-breturn cdef cheng(self,a,b):c=a*breturn cdef chu(self,a,b):c=a/breturn c

生成html代码:

import pytestfrom pytest01.readDemo.readCsv import ReadCsvfrom pytest01.demo.cale import Caleimport osimport allurer=ReadCsv()cc=r.read_csv()d=Cale()class Test():@allure.story("加法函数测试正确")def test001(self):for i in cc:dd=d.jia(int(i[0]),int(i[1]))assert dd==int(i[2])if __name__ == '__main__':pytest.main(['--alluredir', 'report/result', 'test_02.py'])split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'os.system(split)

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

     视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。   

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

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

相关文章

Spring(19) ThreadPoolTaskExecutor 线程池的使用

目录 一、线程池简介1.1 为什么使用线程池1.2 线程池为什么需要使用队列1.3 线程池为什么要使用阻塞队列而不是用非阻塞队列1.4 如何配置线程池1.5 execute() 和 submit() 方法 二、ThreadPoolTaskExecutor 线程池简介2.1 简介2.2 核心参数配置2.3 ThreadPoolTaskExecutor 内部…

数据库作业三

1.创建student和score表 2.为student表和score表增加记录 3.查询student表的所有记录 4.查询student表的第2条到4条记录 5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 6.从st…

flutter3使用dio库发送FormData数据格式时候的坑,和get库冲突解决办法

问题描述 问题1:当你使用FormData.from(Flutter3直接不能用)的时候,可能会提示没有这个方法,或者使用FormData.fromMap(flutter3的dio支持)的时候也提示没有,这时候可能就是和get库里面的Formdata冲突了 问题1:The me…

vue基于spring boot框架的发艺美发店理发店管理系统的设计q9xpe

店铺信息、美发信息是发艺美发店管理系统的重要组成部分,信息清晰、详细、准确,能够有效地促进发艺美发店管理系统的运行[5]。基础设定函数是对整个系统的总体布局进行合理安排,包括:店铺活动、物品信息、领用信息等。通过对各类资…

【C++】vector模拟实现过程中值得注意的点

Hello大家好!我是咕噜的铁蛋!C中的vector是一种动态数组,它能够根据需要自动增长和缩小。虽然C标准库已经为我们提供了vector的实现,但在某些情况下,我们可能需要自己模拟实现一个类似于vector的数据结构。今天铁蛋将给…

CPU密集型计算、IO密集型计算、多进程、多线程

参考链接: 使用多进程multiprocessing模块加速程序的运行_哔哩哔哩_bilibili 什么是CPU密集型计算、IO密集型计算: CPU密集型: CPU密集型也叫计算密集型,是指I/O在很短的时间就可以完成,CPU需要大量的计算和处理&a…

javaweb学习day01(HTML)

一、B/S 软件开发架构简述 1 Java Web 技术体系图 2 B/S 软件开发架构简述 B/S架构 前端 后端 数据库 二、HTML 1 官方文档 地址: https://www.w3school.com.cn/html/index.asp 离线文档: W3School 离线手册(2017.03.11 版).chm 2 网页 3 HTML 介绍 3.1 HTML 是什么…

oop面向对象编程python

1.定义一个圆类(Circle),求圆的面积和周长 import mathclass Circle():def __init__(self, R ,name):self.radius Rself.name namedef girth(self):return 2 * self.radius * math.pidef area(self):return self.radius ** 2 * math.pic1 Circle(10,&q…

Docker之nacos集群部署

前言 Nacos 是一个开源的注册中心和配置中心,用于实现微服务架构中的服务发现、服务治理和动态配置管理。在 Docker 中使用 Nacos,你可以通过拉取官方提供的 Docker 镜像并运行容器的方式来快速部署 一.Nacos镜像拉取及独立模式 镜像拉取命令详解&…

【自动化测试】看完这篇文章,让你了解到你和大厂的差距到底在哪儿

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

sc.pl.umap 画feature plot

今天有时间尝试测试了这个scanpy的feature plot,其实很简单,就是使用 sc.pl.umap(adata,color"gene name"), 但是这个地方就有一个问题,这个画出来的值是原始的基因值还是scale之后的,这个我得搞清楚 首先看使用例子,参…

企业为什么需要选择软件测试外包公司?有哪些查找途径?

软件测试外包公司是专门为软件企业提供软件测试服务的机构。这些公司拥有一支经验丰富、专业化的软件测试团队,能够帮助企业进行软件产品的测试、评估和质量保证。 一、企业为什么需要选择软件测试外包公司?   1.专业的测试团队:外包公司拥有经验丰富…

赤藓糖醇行业研究:预计2029年将达到3.5亿美元

赤藓糖醇是一种四碳糖醇,存在于多种食物中,如葡萄、梨、西瓜等,可由微生物发酵法和化学合成法两种方法制备,目前商业化生产中均采用微生物发酵法。赤藓糖醇由葡萄糖发酵制作而成,上游原料主要包括葡萄糖、玉米淀粉糖和…

C++(13)——string

上篇文章中介绍了中部分函数的用法,本篇文章将继续对其他的函数进行介绍: 1. substr: string substr (size_t pos 0, size_t len npos) const; 函数的两个参数如上述代码所示,此函数的主要作用是根据一个已有的的对象的起始坐标开始&a…

STM32---基本定时器(含源码)小白可入

写在前面:定时器是STM32中一个十分重要的外设,并且在STM32中具有多个定时器。定时器的包括基本定时器、通用定时器以及高级控制定时器,这些定时器相关独立,不共享任何资源。当然,其难易程度也是逐渐增加的,…

如何实现固定公网地址远程访问本地部署的Termux MySQL数据库

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

postman测试文件上传接口设置说明

Postman介绍及下载链接地址 Download Postman | Get Started for Free 打开postman 选择POST方法,然后设置goform 设置Header参数 设置Body参数,选择数据form-data 添加文件, 选择为文件属性 添加需要上传的文件

MySql三方工具

Yearning 1.1.1 Yearning简介 Yearning 开源的MySQL SQL语句审核平台,提供数据库字典查询,查询审计,SQL审核等多种功能。 Yearning 1.x 版本需Inception提供SQL审核及回滚功能。 Inception是集审核,执行,回滚于一体的…

封装日期时间组件

概述 该组件包含日期选择&#xff0c;任意时间选择、固定时间点选择。 子组件代码(date-picker.vue) <template><div id"date_picker"><el-popover placement"top" width"322" trigger"click" ref"popover&quo…

照片修复可以用哪些工具?分享3款实用的!

展给了我们重新唤醒这些记忆的可能。现在&#xff0c;有许多工具可以帮助我们修复这些珍贵的照片&#xff0c;让它们重新焕发生机。那么&#xff0c;有哪些工具可以做到这一点呢&#xff1f;接下来&#xff0c;让我们一起来看看吧&#xff01; 一、智能修复软件 现在市面上有许…