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


    【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试)

    失败后停止

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

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

    修改文件如下

    1. # filename:test_02.py
    2. import pytest
    3. class TestDemo02:
    4. def func(self, x):
    5. return x + 1
    6. # 修改成断言失败
    7. def test_01(self):
    8. assert self.func(3) == 14
    9. # 修改成断言失败
    10. def test_02(self):
    11. assert self.func(3) == 5
    12. if __name__ == '__main__':
    13. pytest.main(['-s', '-x', 'test_02.py'])

    运行后观察结果

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

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

    指定执行范围

    通过test_01.py文件执行测试

    pytest test_01.py
    

    通过文件夹执行测试

    pytest testcase
    
    1. 创建testcase目录,然后把test_02.py移入目录下
    2. 然后执行命令,可以发现只执行了test_02.py下的用例
    1. ============================= test session starts =============================
    2. platform win32 -- Python 3.7.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
    3. rootdir: D:\study\auto-pytest
    4. collected 3 items
    5. testcase\test_02.py FF
    6. ================================== FAILURES ===================================
    7. _____________________________ TestDemo02.test_01 ______________________________
    8. ...此处省略报错具体原因
    9. testcase\test_02.py:11: AssertionError
    10. _____________________________ TestDemo02.test_02 ______________________________
    11. ...此处省略报错具体原因
    12. testcase\test_02.py:15: AssertionError
    13. =========================== short test summary info ===========================
    14. FAILED testcase/test_02.py::TestDemo02::test_01 - assert 4 == 14
    15. FAILED testcase/test_02.py::TestDemo02::test_02 - assert 4 == 5
    16. !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 2 failures !!!!!!!!!!!!!!!!!!!!!!!!!!
    17. ============================== 2 failed in 0.04s ==============================

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

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

    pytest ‐k "Demo02 and not 01"
    

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

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

    通过节点id来进行测试

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

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

    pytest testcase/test_02.py::TestDemo02:test_01
    
    可以从结果看出,执行了test_02.py内TestDemo02类下的test_01方法
    1. ============================= test session starts =============================
    2. platform win32 -- Python 3.7.1, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
    3. rootdir: D:\study\auto-pytest
    4. collected 1 item
    5. testcase\test_02.py .
    6. ============================== 1 passed in 0.01s ==============================

    通过标记来执行

    pytest ‐m tag01
    

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

    1. # filename:test_02.py
    2. import pytest
    3. class TestDemo02():
    4. def func(self, x):
    5. return x + 1
    6. @pytest.mark.tag01
    7. def test_01(self):
    8. assert self.func(3) == 4
    9. def test_02(self):
    10. assert self.func(3) == 4
    11. def test_03(self):
    12. assert self.func(3) == 4

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

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

    下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

    软件测试面试小程序

    被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

    涵盖以下这些面试题板块:

    1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

    6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

     

    文档获取方式:

    这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

    以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

  • 相关阅读:
    JSP注释(多种注释详解)
    PyTorch 源码解读之 torch.utils.data:解析数据处理全流程(非常好,一篇足够)
    A-O-P 一篇概览
    面试官:设计一个异步并发限制吧
    Kubernetes 集群部署 Prometheus 和 Grafana
    JVM实战:JVM运行时数据区
    springcloudalibaba架构(6):Sentinel热点规则
    MASA MAUI iOS 文件下载与断点续传
    Django学习过程01
    笔记 mysql text 不能设置他的默认值如not null
  • 原文地址:https://blog.csdn.net/2301_77645750/article/details/133208539