pytest-基础

一.使用pytest,默认的测试用例的规则以及基础应用

1.模块名字必须已test_开头或者_test结尾

2.测试类必须以Test开头,并且不能有init方法

3.测试方法必须以test开头

示例代码 test_001.py

import pytest
class TestCase:def test_case(self):print("执行测试用例")

二、pytest测试用例的运行方式

主函数模式:

        运行所有:pytest.main()

        运行指定的模块:pytest.main(['-vs',模块名.py])

        运行指定目录:mytest.main(['-vs','目录路径'])

        通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

                ·类外的用例通过pytest.main(['-vs','模块路径::方法名'])

                ·类内的用例:pytest.main('-vs','模块路径::类名::方法名')

        命令行模式:

                ·运行所有:pytest

                ·运行指定模块:pytest -vs 目录路径

                ·通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数组成

                        ·类外的用例:pytest -vs 模块名::方法名

                        ·类内的用例:pytest -vs 模块路径::类名::方法名

        pytest.ini配置文件模式

                pytest.ini是pytest单元测试框架的核心配置文件

                        位置:必须放在项目的根目录

                        编码格式,必须使用ANSI格式,可用notepad++等工具修改、

                        作用:改变pytest默认的行为

                        运行的规则:主函数模式和命令行模式都会读取这个配置文件

配置文件实例:

[pytest]
#命令行参数,用空格分割
addopts = -vs
#测试用例文件,可以自己配置,...../testcase为上已成的testcase文件夹
testpaths = ../testcase
#配置测试搜索的模块文件名称
pytest_files = test*.py
#配置测试搜索的测试类名
pytest_classes = Test*
#配置测试搜索的测试函数名
pytest_funtions = test

  以上为示例代码,用的时候需要把中文去掉,使用ANSI编码格式保存

参数详解:

·-s:输出调试信息,包括print打印的信息

·-v:显示更多详细的信息

·-n:支持多线程或者分布式运行测试用例

        ·主函数模式:pytest.main('-vs','模块名.py','-n=2')--->调用两个线程执行

         命令行模式:pytest -vs 模块名.py -n 2

                如果有5条用例用两个线程

                线程一:1,3,5

                线程二:2,4条

         ·--reruns:失败用例重跑        

                主函数模式:pytest.main(['-vs','模块名.py','-n=2','--reruns=2'])

                命令行模式:pytest -vs 模块名.py -n = 2 --reruns=2

                        失败后重跑两次

        ·-x:遇到报错测试用例则立即停止测试

        ·--mafail:遇到指定个数用例失败就停止测试

                主函数模式:pytest.main(['-vs','模块名.py','--maxfail=2'])

                命令行模式:pytest -vs 模块名.py --mafail=2

        · -k:根据测试用例名称内的部分字符串指定执行测试用例

                主函数模式:pytest.main(['-vs','模块名.py','-k=xx'])

                命令行模式:pytest -vs 模块名.py -k= 'xx'

        ·--html:生成原生html测试的报告

                主函数模式:pytest.main(['-vs','模块名.py','--html=报告路径'])

                命令模式:pytest -vs 模块名.py --html '报告路径'

        ·-vs:综合 -s,-v功能

三、pytest的测试执行循序

        ·unittest的执行顺序:默认按照ASCII表的顺序执行测试用例

        ·pytest的执行顺序:默认按照从上到下的顺序执行测试用例

                改变pytest的默认执行循序:使用mark中装饰器

                

@pytest.mark,run(order=3)

四、如何分组执行(冒烟,分模块执行,分接口或者ui执行)

        smoke:莫言用例,分布在各个模块里面

                步骤一:在pytest.ini配置文件内添加配置信息:markers

                

[pytest]
addopts = -vs
testpaths = ../testcase
python_files = test*.py
python_classes = Test*
python_functions = test
markers =
smoke:冒烟
g1:组一
g2:组二

               步骤二:给测试函数添加装饰器@pytest.mark.smoke

                步骤三:执行测试用例:

                        主函数模式:pytest.main(['-vs','模块名.py','-m=smoke'])

                        命令行模式:pytest -vs -m 'smoke'

                                注意:此处的smoke不是固定的,可以自己定义标记名称

                                 如果想执行多个标记的用例:pytest -vs -m '标记1' or '标记2'

五、pytest跳过测试用例

        无条件跳过:

               添加装饰器:@pytest.mark,skip(reason = "跳过原因")

        有条件跳过:

                添加装饰器:@pytest.mark.skipif(表达式,reason = '跳过原因')

                        注意:此处的表达式得到的应该是一个布尔类型,表达式成立则跳过,否则执行测试用例

六、断言

在pytest框架中使用assert进行断言

        示例代码

                

class TestCase:
# 测试用例
def test_case(self):
print("执行测试用例")
# 断言:语法assert 表达式
assert 1 == 2

注意:assert后面的表达式需要返回布尔值类型,True为测试用例通过,False为用例失败

              

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

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

相关文章

Vector 模拟实现

前言 本文将会向您介绍如何模拟实现vector 引入 Vector是一种动态数组,也是C标准库中的容器之一。它提供了一种存储和操作一系列元素的方式,类似于数组,但具有更多的功能和灵活性。 Vector可以存储不同类型的元素,并且可以根据…

【ChatGPT原理与实战】4个维度讲透ChatGPT技术原理,揭开ChatGPT神秘技术黑盒!

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:CSTL&…

HarmonyOS开发:那些开发中常见的问题汇总(一)

前言 本来这篇文章需要讲述静态共享包如何实现远程依赖和上传以及关于静态共享包私服的搭建,非常遗憾的告诉大家,由于组织管理申请迟迟未通过,和部分文档官方权限暂未开放,关于这方面的讲解需要延后了,大概需要等到202…

哈工大校园网显示IP地址错误连接不上

您当前获取到的IP地址有误,请重新开关无线获取IP地址(注:电脑端还可以通过cmd窗口,输入ipconfig /release、ipconfig /renew命令)。如未解决此问题请联系网络安全和信息化办公室处理。 当校园网登录时会出现如上情况,并且当你按照他的方法尝试…

虚幻引擎 UE5 增强输入系统

用人话讲!虚幻引擎 UE5 增强输入系统(蓝图篇)_酥妃大魔王i的博客-CSDN博客 UE5 -- EnhancedInput(增强输入系统) - 知乎 (zhihu.com) 简单认识 虚幻引擎中的增强输入 | 虚幻引擎5.1文档 (unrealengine.com) 文档有较详细介绍 标记一下方便…

数据结构——图(图的存储及基本操作)

文章目录 前言一、邻接矩阵法(顺序存储)1.无向图存储邻接矩阵算法2.有向图存储邻接矩阵算法 二、邻接表法(图的链式存储结构)总结 前言 邻接矩阵法(图的顺序存储结构) 1.1 无向图邻接矩阵算法 1.2 有向图邻接矩阵算法邻接表法(图的一种链式存储结构) 一…

yyyy-MM-dd‘T‘HH:mm:ssZ的T是什么意思?为什么要用单引号引着

背景 Java里的日期格式,通常我们看到 yyyy-MM-ddTHH:mm:ssZ 的写法是什么意思? 尤其这个T作为分隔符为什么左右有单引号,这个单引号会打印出来吗? 这个Z又是什么意思?是时区吗?如果是时区,输…

56、springboot ------ RESTful服务及RESTful接口设计

★ RESTful服务 RESTful服务是“前后端分离”架构中的主要功能&#xff1a; 后端应用对外暴露RESTful服务&#xff0c;前端应用则通过RESTful服务与后端应用交互。后端应用 RESTful接口 <------------------> 前端★ 基于JSON的RESTful服务 使用RestController注解…

php程序设计的基本原则

单一职责原则&#xff08;SRP&#xff09;&#xff1a;一个类应该只有一个原因引起变化&#xff0c;即一个类应该只负责一项职责。 class User {private $name;private $email;public function __construct($name, $email) {$this->name $name;$this->email $email;}p…

vue项目部署,出现两个ip的原因

我宁愿靠自己的力量打开我的前途,而不愿求有力者的垂青。——雨果 tags: 篇首语&#xff1a;本文由小常识网(cha138.com)小编为大家整理&#xff0c;主要介绍了vue项目部署&#xff0c;出现两个ip的原因相关的知识&#xff0c;希望对你有一定的参考价值。 参考技术A 在部署v…

建站系列(五)--- 前端开发语言之HTML、CSS、JavaScript

目录 相关系列文章前言一、前端开发与后端开发二、前端语言简介&#xff08;一&#xff09;、HTML&#xff08;二&#xff09;、CSS&#xff08;三&#xff09;、JavaScript 三、学习指导&#xff08;一&#xff09;、开发环境&#xff08;二&#xff09;、第一个Hello&#xf…

央媒发稿不能改?媒体发布新闻稿有哪些注意点

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 “央媒发稿不能改”是媒体行业和新闻传播领域的普遍理解。央媒&#xff0c;即中央主要媒体&#xff0c;是权威性的新闻源&#xff0c;当这些媒体发布新闻稿或报道时&#xff0c;其他省、…

Pdf文件签名检查

如何检查pdf的签名 首先这里有一个已经签名的pdf文件&#xff0c;通过pdf软件可以看到文件的数字签名。 下面就是如何代码检查这里pdf文件的签名 1.引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId&g…

时序预测 | MATLAB实现ARMA自回归移动平均模型时间序列预测

时序预测 | MATLAB实现ARMA自回归移动平均模型时间序列预测 目录 时序预测 | MATLAB实现ARMA自回归移动平均模型时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现ARMA时间序列预测&#xff08;完整源码和数据&#xff09; 本程序基于MATLAB的armax函…

vue2+openlayers6 项目实战示例详解【目录】

vue 和 openlayers是两个流行的前端即时&#xff0c;可以用于构建复杂的地图应用程序。本目录将介绍vue 和 openlayers的基本概念&#xff0c;以及如何在vue项目中使用openlayers进行地图展示和交互。 1. vue2 介绍 Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同…

应用在电子体温计中的国产温度传感芯片

电子体温计由温度传感芯片&#xff0c;液晶显示器&#xff0c;纽扣电池&#xff0c;专用集成电路及其他电子元器件组成。能快速准确地测量人体体温&#xff0c;与传统的水银玻璃体温计相比&#xff0c;具有读数方便&#xff0c;测量时间短&#xff0c;测量精度高&#xff0c;能…

gma 2.0.1 (2023.09.15) 更新日志

安装 gma 2.0.1 pip install gma2.0.1修复 1、【栅格处理-栅格分解】   修复了由于关联模块调整导致类方法失效引起的函数功能异常的问题。 2、【栅格处理-栅格更新相关】   修复了自身数据更新相关的函数&#xff08;例如 添加颜色映射表 等&#xff09;格式检查不通过的…

【机器学习习题】估计一个模型在未见过的数据上的性能

您提到的不等式是统计学中的泛化误差界&#xff08;generalization error bound&#xff09;&#xff0c;它用于估计一个模型在未见过的数据上的性能。这个不等式是由Hoeffding不等式和Union Bound组合而成的。在这个不等式中&#xff0c;我们有以下符号&#xff1a; - P[|E_i…

pgsql 主从搭建

在 PostgreSQL 中&#xff0c;主从复制&#xff08;Master-Slave Replication&#xff09;是一种常见的数据库高可用性和数据备份解决方案。它允许你创建一个主数据库服务器&#xff08;Master&#xff09;&#xff0c;并在一个或多个从数据库服务器&#xff08;Slave&#xff…

什么是 Microsoft Office 365? Excel on Cloud 的好处

什么是Office 365 Office 365 是 Microsoft 的一套程序&#xff0c;可以在本地运行&#xff0c;也可以同步到云存储。 可以从访问程序。 借助 Office 365&#xff0c;您可以在任何地方进行工作&#xff0c;并与世界各地的同事共享工作文档。 Office 365 支持的设备&#xff1a…