温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在python中配置pytest框架

发布时间:2021-03-16 15:12:09 来源:亿速云 阅读:188 作者:Leah 栏目:开发技术

今天就跟大家聊聊有关如何在python中配置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 ===========================

看完上述内容,你们对如何在python中配置pytest框架有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI