【测试框架篇】单元测试框架pytest(2):用例编写

一、 前言

前面一章我们介绍了pytest环境安装和配置,并在pycharm里面实现了我们第一个pytest脚本。但是有些童鞋可能在编写脚本的时候遇到了问题,本文会讲一下我们编写pytest用例时需要遵守哪些既定的规则,同时这个规则也是可以修改的。

二、用例编写

1、默认的用例识别的规则

        当我们通过pytest执行用例时,pytest会自动递归遍历执行路径下所有的目录,根据pytest中默认用例的识别的规则,自动收集测试用例。所有在使用pytest编写测试用例之前,我们首先需要了解一下pytest收集用例时默认的用例识别规则。

  • 用例文件:所有文件名为test_开头或者_test开头的文件才会被识别为用例文件;
  • 用例类:测试文件中每个Test开头的类就是一个测试用例类,也就是说,我们定义class的时候必须以Test开头,但是没有init方法
  • 测试用例:测试类中每个test_开头的方法就是一条测试用例,测试文件中每个test开头的函数也是一条测试用例。也就是说,编写测试用例必须以test_开头
  • 所有的包pakege必须要有__init__.py文件
  • 断言使用assert

注意:上述默认的用例查找规则,可在pytest的配置文件pytest.ini进行修改(后续章节会详细介绍配置文件的使用) 另外pytest兼容unittest,以unittest的用例编写规范写的用例,pytest都能够识别出来。

2、编写用例

通过了解上述pytest中用例识别的规则,可以知道pytest中用例编写,能使用函数的形式,也能使用类的形式,那么接下来就分别给大家介绍一下这两种方式编写用例。

1)以函数形式编写用例

  • 规则:用例方法名以test_开头
# \testcase\test_demo1.py
def test_demo():print('以函数形式编写用例')assert 1==2
  • 在pycharm终端中输入pytest命令就可以执行测试函数,输出结果如下:

这里用的是在pycharm终端输入pytest命令执行用例,其实有多种方法可以用来执行用力的。后续会给大家一一讲述。另外这里出现了assert断言导致用例失败,大家可以提前感受下。

2)以类的形式编写用例

  • 规则: 测试类命名以Test开头,用例方法以test_开头
import pytestclass TestDemo:def test_demo(self):print('以类的形式编写用例')assert 1def test_demo2(self):print('test_demo2用例')assert 100 == 200if __name__ == '__main__':pytest.main()
  • 前面讲的用pytest命令执行,这里我们换种方式执行,也就是在用例里面直接调用pytest.main()函数。

三、执行测试

  • 在上面我们使用的是 pytest这个命令去执行测试用例。关于pytest执行测试,有两种方式,一种是命令行通过pytest这个命令执行,另外在代码中可以通过pytest.main()这个方法来执行测试。接下来就和大家分别详细的介绍一下pytest执行测试的方式和常用的参数
1、执行参数

# 测试用例
class TestDome:def test_demo1(self):print('----测试用例执行-----------')assert 11 == 11

  • 参数:-v      显示测试的详细参数信息

  • 参数:-s    显示测试执行的输出信息

2、pytest.main执行的参数传递
  • pytest.main方法执行测试参数传递方式:

import pytestargs = ['-v','-s']
pytest.main(args)
  • 所有的参数放在列表中,每个参数就是列表中的一个元素
  • 详细的参数可以使用命令pytest -h查看
3、指定执行的测试目录
  • 命令:pytest 测试目录路径
import pytestargs = ['-v','-s','testcase/']
pytest.main(args)
  • pytest会执行指定目录路径下所有的测试用例
4、指定执行的测试文件
  • 命令:pytest 测试文件路径
import pytestargs = ['-v','-s','testcase/test_demo1.py']
pytest.main(args)
  • pytest会执行指定测试文件中下所有的测试用例
5、指定执行的测试类
  • 命令:pytest 测试文件::测试类
import pytestargs = ['-v','-s','testcase/test_demo1.py::TestClass']
pytest.main(args)
  • pytest会执行指定测试类里面所有的测试用例
6、指定执行的测试用例
  • 命令:pytest 测试文件::测试类::测试方法
import pytestargs = ['-v','-s','testcase/test_demo1.py::TestClass::test_method']
pytest.main(args)
  • pytest会执行指定的测试方法

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

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

相关文章

嵌入式硬件电子电路设计(五)MOS管详解(NMOS、PMOS、三极管跟mos管的区别)

引言:在我们的日常使用中,MOS就是个纯粹的电子开关,虽然MOS管也有放大作用,但是几乎用不到,只用它的开关作用,一般的电机驱动,开关电源,逆变器等大功率设备,全部使用MOS管…

Conda安装软件错误(Pycharm)

conda的环境变量路径错误,比如移动了conda的文件位置conda的python版本不适合,python3.10现在更适合很多库conda对cmd没有初始化,conda init cmd.exe

《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信

《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信 《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信进程间通信的基本概念通过管道实现进程间通信通过管道进行进程间双向通信 运用进程间通信习题(1)什么是进程间通信&…

推荐一款高效的网站数据抓取工具:SysNucleus WebHarvy

SysNucleus WebHarvy是一款高效的网站数据抓取工具,支持从网页中提取文本、图像、URL 和电子邮件等内容,无需编写任何代码或脚本即可轻松实现数据抓取。用户可以通过 WebHarvy 内置的浏览器直观地浏览网页,指引软件提取所需的数据。它通过自动…

道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会

11月12日,2024电动汽车智能底盘大会在重庆开幕。会议由中国汽车工程学会主办,电动汽车产业技术创新战略联盟、中国汽车工程学会智能底盘分会、智能绿色车辆与交通全国重点实验室承办。本届大会围绕电动汽车智能底盘相关技术发展与融合,满足高…

Spring Authorization Server OAuth2.1

Spring Authorization Server介绍 Spring Authorization Server 是一个框架,它提供了 OAuth 2.1 和 OpenID Connect 1.0 规范以及其他相关规范的实现。 它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 身份提供者和 OAuth2 授权服务器产品提供…

C++ 优先算法 —— 三数之和(双指针)

目录 题目:三数之和 1. 题目解析 2. 算法原理 ①. 暴力枚举 ②. 双指针算法 不漏的处理: 去重处理: 固定一个数 a 的优化: 3. 代码实现 Ⅰ. 暴力枚举(会超时 O(N)) Ⅱ.…

(三十三)队列(queue)

文章目录 1. 队列(queue)1.1 定义1.2 函数1.3 习题1.3.1 例题(周末舞会) 2. 双向队列(deque)2.1 定义2.2 函数2.3 题目2.3.1 例题(打BOSS) 1. 队列(queue) 队…

《FreeRTOS任务基础知识以及任务创建相关函数》

目录 1.FreeRTOS多任务系统与传统单片机单任务系统的区别 2.FreeRTOS中的任务(Task)介绍 2.1 任务特性 2.2 FreeRTOS中的任务状态 2.3 FreeRTOS中的任务优先级 2.4 在任务函数中退出 2.5 任务控制块和任务堆栈 2.5.1 任务控制块 2.5.2 任务堆栈…

springboot的社区团购系统设计录像

springboot的社区团购系统设计录像 springboot的社区团购系统设计

力扣每日一题

行变成回文: 对于每一行,遍历前半部分的元素,与后半部分的元素比较。如果不相等,计数器加 1,表示需要翻转一次。 列变成回文: 将矩阵转置,使用与行类似的方式对每一列进行统计。可以使用 Python…

linux c 语言回调函数学习

动机 最近在看 IO多路复用,包括 select() poll () epoll() 的原理以及libevent, 对里面提及的回调机制 比较头大,特写此文用例记录学习笔记。 什么是回调函数 网上看到的最多的一句话便是:回调函数 就是 函数指针的一种用法&am…

游戏引擎学习第九天

视频参考:https://www.bilibili.com/video/BV1ouUPYAErK/ 修改之前的方波数据,改播放正弦波 下面主要讲关于浮点数 1. char(字符类型) 大小:1 字节(8 位)表示方式:char 存储的是一个字符的 A…

# Python IDE的介绍和选择 --- 《跟着小王学Python》

Python IDE的介绍和选择 — 《跟着小王学Python》 《跟着小王学Python》 是一套精心设计的Python学习教程,适合各个层次的学习者。本教程从基础语法入手,逐步深入到高级应用,以实例驱动的方式,帮助学习者逐步掌握Python的核心概念…

柯桥生活英语口语学习“面坨了”英语怎么表达?

“面坨了”英语怎么表达? 要想搞清楚这个表达,首先,我们要搞明白“坨”是啥意思? 所谓“坨”就是指,面条在汤里泡太久,从而变涨,黏糊凝固在一起的状态。 有一个词汇,很适合用来表达这…

ZeroSSL HTTPS SSL证书ACMESSL申请3个月证书

目录 一、引言 二、准备工作 三、申请 SSL 证书 四、证书选型 五、ssl重要性 一、引言 目前免费 Lets Encrypt、ZeroSSL、BuyPass、Google Public CA SSL 证书,一般免费3-6个月。从申请难易程度分析,zerossl申请相对快速和简单,亲测速度非…

Java连接MySQL(测试build path功能)

Java连接MySQL(测试build path功能) 实验说明下载MySQL的驱动jar包连接测试的Java代码 实验说明 要测试该情况,需要先安装好MySQL的环境,其实也可以通过测试最后提示的输出来判断build path是否成功,因为如果不成功会直…

第四节-OSI-网络层

数据链路层:二层--MAC地址精确定位 Ethernet 2: 报头长度:18B 携带的参数:D MAC /S MAC/TYPE(标识上层协议)/FCS 802.3 报头长度:26B 携带的参数:D MAC/S MAC/LLC(标识上层协议)/SNAP(标识…

labview实现功能性全局变量

在日常的项目中,笔者最长使用的就是全局变量,这样用起来不仅省心省力,而且传值也很方便,没有什么阻碍,想要传什么数据一根线拉过去就可以了。后面才知道如果一直使用全局变量会导致读写卡死的状态,而且还有…

网络安全之SQLMAP _DNS注入配置方法

网上针对sqlmap进行dns注入的相关文章太少,只是简单介绍了下–dns-domain参数,相关的实战文章要么就模糊或者一笔带过,。然后参考网上的方法重新整理了一遍,简单理解。 需要准备的东西,sqlmap、windows盲注一个、两个…