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' ] |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?