• 1
  • 2
分享

失败重跑 Pytest-rerunfailures

要求:python 3.5+、pytest 5.0+

安装:pip install pytest-rerunfailures

文档:https://pypi.org/project/pytest-rerunfailures/

使用方法:在命令行或 pytest.ini 配置文件 addopts 中添加选项:--reruns n(重新运行n次数),--reruns-delay m(等待m秒开始下次重新运行)

(1)命令行:pytest --reruns 3 --reruns-delay 5

(2)pytest.ini 文件:addopts = --reruns 3 --reruns-delay 5

若要指定单个测试用例在失败时重新运行,需要在测试用例添加 flaky 装饰器,如:@pytest.mark.flaky(reruns=n, reruns_delay=m)

@pytest.mark.flaky(reruns=2, reruns_delay=3) 
def test_01():        
assert 0

用例执行顺序 Pytest-ordering

默认情况下,Pytest 根据测试方法从上到下执行用例,可以通过第三方插件 Pytest-ordering 来改变测试顺序。

安装:pip install pytest-ordering

文档:https://pypi.org/project/pytest-ordering/

使用方法:在需要调整执行顺序的测试函数上标记 @pytest.mark.run(order=x)order 值越小,优先级越高;执行顺序按照如下排序:0 > 正数 > 未使用run修饰的 > 负数。

import pytest @pytest.mark.run(order=3) 
def test_01():
            print("test_01")
            assert 1     
@pytest.mark.run(order=2) 
def test_02(): 
           print("test_02") 
           assert 1     @pytest.mark.run(order=-1) 
def test_03(): 
           print("test_03")
           assert 1     
# 以上用例将按照 test_02 -> test_01 -> test_03 顺序执行

重复执行 Pytest-repeat


安装:pip install pytest-repeat

使用方法:在命令行或 pytest.ini 配置文件 addopts 中添加选项:

  • --count n(重复运行n次数)

  • --repeat-scope 可以覆盖默认的测试用例执行顺序,类似 fixture 的scope参数

  • function:默认,范围针对每个用例重复执行,再执行下一个用例

  • class:以class为用例集合单位,重复执行class里面的用例,再执行下一个

  • module:以模块为单位,重复执行模块里面的用例,再执行下一个

  • session:重复整个测试会话,即所有测试用例的执行一次,然后再执行第二次

(1)命令行:pytest --count 5

(2)pytest.ini 文件:addopts = --count 5

通常与 pytest 的 -x 搭配使用,重复测试直到失败,常用于验证一些偶现的问题

命令行运行:pytest --count=10 -x test_demo.py

# test_demo.py 文件
import pytest
@pytest.mark.repeat(10) 
# 将指定测试用例标记为执行重复多次
 def test_01(): 
           assert 1

多重断言 Pytest-assume

assert断言可以写多个断言,但一个失败,后面的断言将不再执行,可以使用 pytest-assume 来进行断言,即使断言失败,后面的断言还是会继续执行,比 assert 更高效。

安装:pip install pytest-assume

import pytest   
def test_01(): 
        pytest.assume(1==1)    
        pytest.assume(2==2)        
        pytest.assume(1==0)       
        pytest.assume(3==3)        
        print("测试完成")


作者:芒果日记

原文链接:https://www.cnblogs.com/sharef/p/13572575.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   一、缓存测试  缓存系统的使用,在一定程度上,极大的提升了应用程序的性能和效率,在秒杀系统的建设上,缓存系统出力不小,特别是数据查询方面,数据的快速返回广受好评。但同时,它也带来了一些问题,测试过程中,如果没有及时关注到缓存系统,整个测试环节是有遗漏的。缓存系统没有经过严格的测试,容易产生一个严重的问题,就是数据的一致性问题。如果没有对缓存系统进行测试,并且后端系统对数据的一致性要求很高,那么就不能使用缓存。  缓存的主要作用:是将业务系统的数据处理结果,暂时在内存中保存,并且等待下次访问的时候,立马从内存中取出。在日常开发场景中,因为服务器的性能或者自身业务对数据处理非常耗时的时候,当发...
            14 15 1850
            分享
          • 1.测试背景为了保证XX项目测试工作的组织性,提高测试的工作质量和效率,为XX项目测试工作提供完整的测试计划、测试人员工作安排、测试轮次、测试方法、系统功能模块覆盖率以及测试风险分析,确保测试项目平稳有序的运行。2.测试目标XXXX测试项目的测试目标为:接口程序覆盖率100%,接口错误修改率100%;测试案例的功能覆盖率达100%,执行率达100%;已修改的测试问题回归测试覆盖率达100%;测试记录闭环率达95%。3.测试范围测试计划和设计:根据软件需求说明书,制定测试计划,测试方案,包括收集测试方法,测试用例,测试工具等;单元测试:根据系统详细设计,制定测试计划,测试方案。此项由开发人员自测...
            1 0 5212
            分享
          •   1. 软件测试不是点点点,还有性能测试,自动化测试,安全测试,甚至于AI测试,大数据测试等等,软件测试的前景还是非常好的。  2. 软件测试相对门槛比较低,前期比较容易入门,哪怕不是计算机专业的小白,也能轻松掌握,不过,软件测试后期的难度和开发没有什么两样,想要拿到高薪,就得学会自动化测试,接口测试这些编码知识。  3. 经常有人抱怨,学了用不上,学完就容易忘记,因为学的都是理论知识,长时间不用自然会容易忘记,最好边学边找项目练手。  4. 如果你身边有人说测试很简单,薪资混混也很容易,那么他基本上过几年还是如此,没啥大的长进。  5. 软件测试有高薪也有低薪,月入两三千是真实存...
            0 0 1203
            分享
          •   测试过程中,无论案例怎么设计、怎么执行,都需要测试人员有一定的敏感度去发现问题,测试人员的经验积累无论对于案例的设计、测试执行还是缺陷的发现都有很重要的意义,所以接下来我想给大家分享一些我自己在测试中遇到的经典或非经典场景。  1 需求了解不到位  有些问题其实并不算很难或很复杂,只是需要测试人员在测试前仔细阅读需求,明确需求要求实现的功能、需求给定的请求和应答报文字段、需求阐明的业务规则,所有需求里明确写了的内容在测试中应当务必保证覆盖。我在测试中遇到的问题有返回报文字段和需求不一致,业务规则要求取值范围大于等于固定值,在实现中变成了大于固定值等等情况。相关场景多是疏忽没有仔细阅读需求所...
            0 0 1201
            分享
          • 功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。针对web系统的常用测试方法如下:    1、页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,xenu测试链接包括内部链接和外部链接,在使用的时候...
            12 12 2610
            分享
      • 51testing软件测试圈微信