随笔 - 10  文章 - 2  评论 - 0  阅读 - 22948 

pytest框架要执行用例,必须以模块test开头,函数test开头,类Test开头,否则不被执行;

pytest的执行 :

执行package:python -m pytest -v test/ 

执行模块下的测试用例:python -m pytest -v tests/test_login.py::test_login_001

执行模块下的类:python -m pytest -v test/test_login.py::TestBaidu

执行类下的方法:python -m pytest -v test/test_login.py::TestBaidu::test_login_001s

按照方法名来筛选要执行的方法用k,后面加--collect-only查看筛选情况:python -m pytest -v -k "profile or register" --collect-only,取消--collect-only后进行执行,如果将前面的or换成and,那么执行的就是名字中既有profile又有register的函数;

-m是以增加装饰器的形式进行分组,python -m pyetst -v -m "login or logout“

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import pytest
@pytest.mark.login
def test_login_001():
pass
@pytest.mark.login
def test_login_002():
pass
@pytest.mark.login
def test_login_003():
pass
@pytest.mark.logout
def test_logout_001():
pass
@pytest.mark.logout
def test_logout_002():
pass
@pytest.mark.profile
def test_profile_001():
pass
@pytest.mark.profile
def test_profile_002():
pass

 -x失败后立即停止:

python3 -m pytest -v -x test_login.py

pytest.mark.skip(reason="写跳过的原因") 

pytest参数化,如果类列表中的数据类型是字典,那么参数化时字典中的key值不能被一一写出,所有都要用data代替@pytest.mark.parametrize('data',被调用函数)

1
2
3
4
5
6
7
8
9
10
11
12
def dataDict():
datas=[
{'a':1,'b':1,'result':2},
{'a':'a','b':'b','result':'ab'},
{'a':0,'b':0,'result':0},
{'a':2,'b':2,'result':4},
{'a':'x','b':'y','result':'xy'},
]
return datas
@pytest.mark.parametrize('data',dataDict())
def test_add_dict(data):
assert add(a=data['a'],b=data['b'])==data['result']

  

posted on   小妞妞馒馒  阅读(60)  评论(0编辑  收藏  举报
编辑推荐:
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?
点击右上角即可分享
微信分享提示