当前位置: 首页 > news >正文

自动化测试框架pytest命令参数

失败后停止

使用下面的参数可以让测试在第1(N)次测试失败后停止:

  1. pytest ‐x # 第一次测试失败后停止测试

  2. pytest ‐‐maxfail=2 # 第2次测试失败后停止测试

修改文件如下

# filename:test_02.py
import pytestclass TestDemo02:def func(self, x):return x + 1# 修改成断言失败def test_01(self):assert self.func(3) == 14# 修改成断言失败def test_02(self):assert self.func(3) == 5if __name__ == '__main__':pytest.main(['-s', '-x', 'test_02.py'])

运行后观察结果

test_02.py F================================== FAILURES ===================================
_____________________________ TestDemo02.test_01 ______________________________...此处省略报错具体原因test_02.py:10: AssertionError
=========================== short test summary info ===========================
FAILED test_02.py::TestDemo02::test_01 - assert 4 == 14
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!
============================== 1 failed in 0.09s ==============================Process finished with exit code 0

可以看出,由于第一条报错,2条用例只执行了第1条,使用‐‐maxfail=2可以失败两次后停止,大家自己尝试下。

指定执行范围

通过test_01.py文件执行测试

pytest test_01.py

通过文件夹执行测试

pytest testcase

创建testcase目录,然后把test_02.py移入目录下

然后执行命令,可以发现只执行了test_02.py下的用例

============================= test session starts =============================
platform win32 -- Python 3.7.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: D:\study\auto-pytest
collected 3 items
testcase\test_02.py FF
================================== FAILURES ===================================
_____________________________ TestDemo02.test_01 ______________________________
...此处省略报错具体原因
testcase\test_02.py:11: AssertionError
_____________________________ TestDemo02.test_02 ______________________________
...此处省略报错具体原因
testcase\test_02.py:15: AssertionError
=========================== short test summary info ===========================
FAILED testcase/test_02.py::TestDemo02::test_01 - assert 4 == 14
FAILED testcase/test_02.py::TestDemo02::test_02 - assert 4 == 5
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 2 failures !!!!!!!!!!!!!!!!!!!!!!!!!!
============================== 2 failed in 0.04s ==============================

通过关键字表达式来进行测试

这种方式会执行文件名,类名以及函数名与给定的字符串表达式相匹配的测试用例。

pytest ‐k "Demo02 and not 01"

上面的用例会执 行TestDemo02.test_02但是不会执行TestDemo02.test_01,就像这样,另外3个没执行

============================= test session starts =============================
platform win32 -- Python 3.7.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: D:\study\auto-pytest
collected 5 items / 3 deselected / 2 selectedtestcase\test_02.py ..======================= 2 passed, 3 deselected in 0.03s =======================

通过节点id来进行测试

参数化的类名、函数名和参数,用::分隔。

可以通过下面的方式运行模块中的指定的测试用例

pytest testcase/test_02.py::TestDemo02:test_01

可以从结果看出,执行了test_02.pyTestDemo02类下的test_01方法

============================= test session starts =============================
platform win32 -- Python 3.7.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: D:\study\auto-pytest
collected 1 item
testcase\test_02.py .
============================== 1 passed in 0.01s ==============================

通过标记来执行

pytest ‐m tag01

这种方式会运行所有通过装饰器 @pytest.mark.tag进行装饰的测试用例,所以我们来修改test_02.py文件

# filename:test_02.py
import pytestclass TestDemo02():def func(self, x):return x + 1@pytest.mark.tag01def test_01(self):assert self.func(3) == 4def test_02(self):assert self.func(3) == 4def test_03(self):assert self.func(3) == 4

修改后,运行得到结果,可以看出只执行了打上标记的用例,篇幅问题,结果就不贴上来了

也可以通过pytest -m "tag01 or tag02"来执行标记为tag01和tag02的用例

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 


http://www.mrgr.cn/news/29447.html

相关文章:

  • 使用 Keras 训练一个循环神经网络(RNN)
  • 随手记:简单实现纯前端文件导出(XLSX)
  • CDA LEVEL 2考试大纲
  • 【Ubuntu24.04】服务部署(基础)
  • 批量将当前目录里的所有pdf 转化为png 格式
  • 动手学深度学习10.1. 注意力提示-笔记练习(PyTorch)
  • 实战15-状态栏颜色
  • 第二届Apache Flink极客挑战赛冠军比赛攻略_SkyPeaceLL队
  • dcmtk的自动输入数据纠错模式对DICOMDIR读取的影响
  • golang面试
  • 被复线远传设备ACC1800J-2W/4W2F1E16P
  • 2024年Apple Search Ads(简称:苹果ASA):开展有效活动的秘诀
  • 为什么宠物空气净化器价格差别那么大?好用的宠物空气净化器推荐
  • [ABC330E] Mex and Update
  • 超详细一文到底!软件测试基本流程
  • 如何对企业源代码进行加密?10个保护企业源代码防泄密方法
  • 非常实用的桌面日历 你桌面上的备忘录和提醒工具
  • 巨坑!!华为大数据平台sparksql,连接gauss200数据库
  • ESXI主机证书报错
  • Java技术体系:深入理解JDK与JRE及其产品线
  • 十款加密软件加密公司图纸!2024要如何对CAD图纸进行加密?
  • AI预测福彩3D采取888=3策略+和值012路或胆码测试9月18日新模型预测第91弹
  • linux驱动开发-设备树
  • python-简单的数据结构
  • 发布Java项目到Maven中央仓库
  • vimrc nnoremap配置