python的pytest框架之命令行参数详解(下)


Posted in Python onJune 27, 2019

前言

上篇说到命令行执行测试用例的部分参数如何使用?今天将继续更新其他一些命令选项的使用,和pytest收集测试用例的规则!

pytest执行用例命令行参数

--collect-only:罗列出所有当前目录下所有的测试模块,测试类及测试函数

python的pytest框架之命令行参数详解(下)

--tb=style:屏蔽测试用例执行输出的回溯信息,可以简化用例失败时的输出信息。style可以是 on,line,short,具体区别请自行体验

python的pytest框架之命令行参数详解(下)

--lf:当一次用例执行完成后,如果其中存在失败的测试用例,那么我们可以使用此命令重新运行失败的测试用例

我们第一次执行用例,会看到有2个用例失败

python的pytest框架之命令行参数详解(下)

我们使用--lf参数再次运行用例,可以发现只有之前失败的两个用例重新执行了一次

python的pytest框架之命令行参数详解(下)

--ff:如果上次测试用例出现失败的用例,当使用--ff后,失败的测试用例会首先执行,剩余的用例也会再次执行一次

python的pytest框架之命令行参数详解(下)

小结

以上就是命令行运行测试用例时经常使用到的参数,这些参数不仅可以单独使用,也可以组合一起使用,后期还会涉及到使用fixture时的一些命令,现在不需要了解。你可以使用--help来查看一些命令帮助信息!

pytest收集测试用例的规则

1)从一个或者多个目录开始查找,你可以在命令行指定文件或者目录,如果未指定那么从当前目录开始收集用例

2)在该目录和所有子目录下递归查找测试模块

3)测试模块是指文件名为test_*.py或者*_test.py的文件

4)在测试模块中查找以test_开头的函数

5)查找名字以Test开头的类。其中首先筛选掉包含__init__()函数的类,再查找类中以Test_开头的类方法

规则验证

现在我们就依次演示pytest搜索测试用例的过程

首先我们按照以下目录结构新建一个项目

python的pytest框架之命令行参数详解(下)

每个文件编写如下代码(我们只是为了验证规则,所以用例些的很简单,实际项目不会存在这样简单的用例)

test_测试模块1.py

# 测试函数
 def test_2():
 assert 1 == 1
 # 普通函数
 def func_2():
 print('普通函数') 
 # 测试类
 class TestClass_2(object):
# 测试函数
def test_class_3(self):
assert 1 == 1
# 普通函数
def func_class_3(self):
assert 1 == 1
# 普通类
class NoTestClass_2(object):
# 测试函数
def test_class_4(self):
assert 1 == 1
 # 普通函数
 def func_class_4(self):
 assert 1 == 1

test_测试模块2.py

# 测试函数 
 def test_1(): 
 assert 1==1
 # 普通函数
 def func_1():
 print('普通函数')
# 测试类
class TestClass_1(object):
# 测试函数
def test_class_1(self):
assert 1==1
# 普通函数
def func_class_1(self):
assert 1==1
# 普通类
class NoTestClass_1(object):
# 测试函数
def test_class_2(self):
assert 1 == 1
# 普通函数
def func_class_2(self):
assert 1 == 1

测试用例.py

# 测试函数
 def test_one():
 assert 1==1
 # 普通函数
 def func():
 assert 1==1

代码分析

我们现在根据理论分析并结合代码,可以大致计算出,从项目根目录执行用例,应该会执行4条有效测试用例!

我们在项目根目录下执行pytest --collect-only看下情况,可以发现 搜索了test_测试模块1和test_测试模块2文件,并包括TestClass_2和TestClass_1类及内部test_class_3和test_class_1 和外部的测试函数test_2,test_1.

D:\pytest搜索测试用例规则>pytest --collect-only
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1
rootdir: D:\pytest搜索测试用例规则, inifile:
collected 4 items
<Package 'D:\\pytest搜索测试用例规则\\测试用例目录1'>
<Module 'test_测试模块1.py'>
<Function 'test_2'>
<Class 'TestClass_2'>
<Instance '()'>
<Function 'test_class_3'>
<Module 'test_测试模块2.py'>
<Function 'test_1'>
<Class 'TestClass_1'>
<Instance '()'>
<Function 'test_class_1'>
======================== no tests ran in 0.14 seconds =========================

我们大致已经能看出pytest的搜索规则,现在们再执行一下所有用例看下 使用命令 pytest -v。可以看出确实只有4个用例被执行了,也就是只识别到了4个用例,根据下面的输出信息可以看出每个用例所在的位置

D:\pytest搜索测试用例规则>pytest -v
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-3.8.0, py-1.6.0, pluggy-0.7.1 -- c:\python36\python.exe
cachedir: .pytest_cache
rootdir: D:\pytest搜索测试用例规则, inifile:
collected 4 items
测试用例目录1/test_测试模块1.py::test_2 PASSED [ 25%]
测试用例目录1/test_测试模块1.py::TestClass_2::test_class_3 PASSED [ 50%]
测试用例目录1/test_测试模块2.py::test_1 PASSED [ 75%]
测试用例目录1/test_测试模块2.py::TestClass_1::test_class_1 PASSED [100%]
========================== 4 passed in 0.07 seconds ===========================

大家可以自己试试修改文件,函数,类名称,然后执行用例,查看是否会按照自己的想法执行用例!

总结

ok,通过这两篇文章,我们大概已经知道如何命名测试模块,测试类,测试函数,并且如何使用简单的命令行执行测试用例。那么就赶紧动手试试吧!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python常用内置函数总结
Feb 08 Python
详解Python的三种可变参数
May 08 Python
django框架基于模板 生成 excel(xls) 文件操作示例
Jun 19 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
Jul 23 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
下载官网python并安装的步骤详解
Oct 12 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
Jan 07 Python
Python趣味爬虫之用Python实现智慧校园一键评教
May 28 Python
Python办公自动化PPT批量转换操作
Sep 15 Python
python的pytest框架之命令行参数详解(上)
Jun 27 #Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 #Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
Jun 27 #Python
python如何解析配置文件并应用到项目中
Jun 27 #Python
python 随机生成10位数密码的实现代码
Jun 27 #Python
python自动化测试之如何解析excel文件
Jun 27 #Python
python算法与数据结构之单链表的实现代码
Jun 27 #Python
You might like
php实现的debug log日志操作类实例
2016/07/12 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
javascript 函数参数限制说明
2010/11/19 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
jQuery使用方法
2017/02/04 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
python数据抓取3种方法总结
2021/02/07 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
会计电算化个人自我评价
2013/11/17 职场文书
4s店机修工岗位职责
2013/12/20 职场文书
幼儿园保育员辞职信
2014/01/12 职场文书
人力资源部经理岗位职责规定
2014/02/23 职场文书
经济信息系毕业生自荐信范文
2014/03/15 职场文书
临时租车协议范本
2014/09/23 职场文书
数学教师求职信范文
2015/03/20 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang
python实现Nao机器人的单目测距
2021/09/04 Python