Pytest_测试用例的执行方式(2)
在pytest框架中,编写测试用例有如下约束:
- 所有的测试用例文件名都需要满足test_*.py格式或*_test.py格式。
- 在测试用例文件中,测试类以Test开头,并且不能带有__init__方法,否则pytest不会执行该class。
- 在测用例的class中,可以包含一个或多个test_开头的方法。
在满足上面约束后,有两种方式来执行测试用例:
- 主函数方式
- 命令行方式
主函数方式
执行所有用例
使用pytest.main()方式执行用例,如果不加参数,会自动从当前目录及子目录中寻找符合上述约束的测试用例来执行。
import pytest class TestPractice: def test_01(self):
print("执行用例1") def test_02(self):
print("执行用例2") if __name__ == '__main__':
pytest.main()
执行结果
从上面的结果中,可以看到,print()打印的信息未显示,可以使用-s参数显示打印信息
...(省略)
if __name__ == '__main__':
pytest.main(["-s"])
注意参数格式是列表
上面的pytest.main()是写在用例文件中的,我们可以将其独立出来,结构如下
执行指定用例集
每个测试用例都有一个唯一的nodeid,节点ID格式为 “相对于执行文件的用例文件路径::类名::用例名”。可以使用-v参数,查看执行的详细信息,详细信息包含了用例的节点ID。
在知道了用例的节点ID后,只需要将用例的节点ID以参数的形式传入,就可以执行指定用例了。
执行指定用例
执行指定用例类
执行指定用例文件或指定路径
命令行方式
命令行方式与主函数相差不大,区别是主函数是以列表添加参数,命令行是以空格添加参数。
配置文件修改约束条件
文章开头强调了测试用例的约束条件,这些约束条件是可以通过pytest.ini来修改的,下面是常用的配置字段:
[pytest]
# 命令行参数,用空格分隔
addopts = -v -s # 读取测试用例的起始文件夹
testpaths = ./testcase # 配置搜索的模块文件名称
python_files = test*.py # 配置搜索的测试类名
python_classes = Test # 配置搜索的测试方法名
python_functions = test
复制上面信息,在项目根目录创建pytest.ini,将复制的信息粘贴进去,然后执行用例。
注意:此时会报错:UnicodeDecodeError: 'gbk' codec can't decode
原因是我们在配置文件中使用了中文,解决方法有两种:
- 删除文件中的中文
- 修改iniconfig中的代码
点击倒数第二行的报错,在其前面一行代码的open()函数中增加 encoding='utf-8' 就能解决问题
解决报错问题后,就可以通过修改配置文件执行我们想要执行的用例了,比如,执行类名以A开头用例以b开头的用例
Pytest_测试用例的执行方式(2)的更多相关文章
- PyCharm上unittest 测试用例两种执行方式
每次讲到unittest测试框架的时候,经常有同学在群里反映,为啥我的运行不是按照我往suite里添加的用例顺序执行的,为什么别人的能跑出来报告,我的就不行... 当然,首先确认代码是OK的,如果代码 ...
- Robot Framework(十) 执行测试用例——测试执行
3.2测试执行 本节描述如何执行从解析的测试数据创建的测试套件结构,如何在失败后继续执行测试用例,以及如何正常停止整个测试执行. 3.2.1执行流程 执行套房和测试 设置和拆卸 执行顺序 3.2.2继 ...
- 第9章 Shell基础(1)_Shell简介和脚本执行方式
1. Shell概述 1.1 Shell简介 (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编 ...
- Windows服务定时执行方式
采用System.Timers.Timer 间隔固定时间执行 方式一:间隔固定的时间执行一次,关键代码: protected override void OnStart(string[] args) ...
- shell各种执行方式区别
shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别 原文出处:http://blog.csdn.net/dance_rise/article/deta ...
- Linux下的Source命令及脚本的执行方式解析
Linux Source命令及脚本的执行方式解析 http://blog.csdn.net/wangyangkobe/article/details/6595143 当我修改了/etc/profile ...
- SQL Select count(*)和Count(1)的区别和执行方式及SQL性能优化
SQL性能优化:http://www.cnblogs.com/CareySon/category/360333.html Select count(*)和Count(1)的区别和执行方式 在SQL S ...
- Delphi中ADO异步执行方式
当ADO开始处理数据后,应用程序必须等到ADO处理完毕之后才可以继续执行.但是除了同步执行方式之外,ADO也提供了异步执行的方式,允许当ADO处理时,应用程序仍然能够先继续执行.而当ADO处理数据完毕 ...
- 探讨 : Host在IIS上的WCF Service的执行方式
一个WCF请求由两个线程来完成 运行在IIS上的WCF service, 你可能会注意到一个比较有趣的现象. 当WCF service接收到一个请求时, 这个请求实际上会有两个线程在执行这个请求. 一 ...
随机推荐
- eclipse.ini配置 vmargs 说明
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 1. 各个参数的含义什么? 参数中-vmargs的意思是设置JVM参数, ...
- 转:Java多线程基础问题
如果你即将去一家从事大型系统研发的公司进行Java面试,不可避免的会有多线程相关的问题.下面是一些针对初学者或者新手的问题,如果你已经具备良好的基础,那么你可以跳过本文,直接尝试针对进阶水平的Java ...
- 0RAYS元旦招新赛
一共有4道pwn题,题目不算难,但是挺考验调试能力的. pie 一个main函数就四次溢出... 第一次leak canary,第二次leak libc,第三次直接覆盖返回地址为one_gadgets ...
- CF740B Alyona and flowers 题解
Content 有 \(n\) 个数 \(a_1,a_2,a_3,...,a_n\),给定 \(m\) 个区间,你可以选择一些区间使得它们的总和最大(也可以不选),求这个最大的总和. 数据范围:\(1 ...
- DirectByteBuffer实现原理分析
1.创建DirectByteBuffer Direct ByteBuffer是通过JNI在Java虚拟机外的内存中分配了一块(所以即使在运行时通过-Xmx指定了Java虚拟机的最大堆内存,还是可能实例 ...
- 【九度OJ】题目1064:反序数 解题报告
[九度OJ]题目1064:反序数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1064 题目描述: 设N是一个四位数,它的 ...
- 【LeetCode】895. Maximum Frequency Stack 解题报告(Python)
[LeetCode]895. Maximum Frequency Stack 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxueming ...
- 【LeetCode】86. Partition List 解题报告(Python)
[LeetCode]86. Partition List 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http:// ...
- C. Propagating tree
C. Propagating tree time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 教学日志:javaSE-初识java
一.编译执行第一个java程序 /* 总结: 1.编译执行第一个java程序 步骤如下: 1.安装JDK开发环境: 2.配置环境变量,JAVA_HOME,PATH;--验证环境变量配置是否成功 jav ...