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接收到一个请求时, 这个请求实际上会有两个线程在执行这个请求. 一 ...
随机推荐
- 【Linux】【Services】【Disks】bftfs
1. 简介 1.1 Btrfs(B-tree,Butter FS,Better FS) 1.2. 遵循GPL,由oracle在2007年研发,支持CoW 1.3. 主要为了替代早期的ext3/ext4 ...
- MyBatis中关于大于,小于写法
第一种写法(1): 原符号 < <= > >= & ' " 替换符号 < <= > >= & ' " ...
- [特征工程] GBDT
- hbuilder打包app基本流程
声明:本文可能用到一些工具和第三方网站,都是为了达到目的而使用的工具,绝不含有广告成分 1.下载.最新的Hbuilder X貌似不能直接创建移动app了(自己不会用),建议旧版.可去腾某讯软件中心下载 ...
- c#中Array,ArrayList 与List<T>的区别、共性与转换
本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...
- 解放生产力「GitHub 热点速览 v.21.51」
作者:HelloGitHub-小鱼干 解放生产力一直都是我们共同追求的目标,能在摸鱼的空闲把赚了.而大部分好用的工具便能很好地解放我们的生产力,比如本周特推 RedisJSON 不用对 JSON 做哈 ...
- 权限设计的idea
1.角色增加两个字段,一级部门(如钻井事业部),党组织角色(或者团委在线角色)当然或者是其他的团委在线角色 2.增加一张表,标示在线模块(如党组织在线,团委在线,工会在线,纪检在线), 3.菜单(栏目 ...
- Raft成员变化(Membership Change)
我司高产作家唐刘老师的小猪佩奇版"深入浅出 Raft"第四弹来啦~~前几篇内容戳这里 ↓ 在猪爸爸的努力下,泥坑银行终于能高效正常的运作了,但猪爸爸一直比较担心海盗岛那边的网点,因 ...
- Visiual Studio之c++项目瘦身(删除中间项)
欢迎指正 本文主要涉及 Visiual Studio(简称VS) 创建的c++项目 和 windows下批处理相关点. 1.中间项 A.VS创建的c++项目,生成后,会有许多中间项,包括项目生成的中间 ...
- 【九度OJ】题目1435:迷瘴 解题报告
[九度OJ]题目1435:迷瘴 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1435 题目描述: 通过悬崖的yifenfei,又面临 ...