首页 > 其他分享 >12. Pytest常用插件: pytest-rerunfailures失败用例重跑

12. Pytest常用插件: pytest-rerunfailures失败用例重跑

时间:2023-01-17 10:33:17浏览次数:37  
标签:插件 12 demo py --- 用例 pytest test

一、前言

测试环境不稳定偶发接口超时(和服务无关,纯粹是环境问题),然后执行接口case也因此偶发失败。比如同一个接口case跑五次,其中有两次失败,另外三次都是成功的,这种偶发性的环境问题就需要我们手动重跑(还不一定能够通过)。有没有一个比较好的机制,保证case能够尽最大努力通过测试呢?

这里我们介绍pytest的一个失败重跑插件:pytest-rerunfailures。

二、学习目标

1.pytest-rerunfailures安装

2.pytest-rerunfailures应用

三、知识点

1.【pytest-rerunfailures安装】

插件安装:

pip install pytest-rerunfailures

2.【pytest-rerunfailures应用】

使用方式有两种:

  • 命令行参数

    • 语法:

      pytest --reruns 3 --reruns-delay 1 test_demo.py 
      #3是重试次数,1是每次间隔1秒
      pytest --reruns 3 --only-rerun AssertionError --only-rerun ValueError test_demo.py 
      #也可以指定异常类型重跑,其中多个--only-rerun之间是或的关系
      
    • 代码示例:

      #测试用例文件test_XXX.py
      class TestCase():
      
          def test_01(self):
              print("---用例1执行---")
              assert False
      
    • 运行效果:

      test_demo.py:8: AssertionError
      ----------------------------------------------- Captured stdout call ----------------------------------------------------
      ---用例1执行---
      ----------------------------------------------- Captured stdout call ----------------------------------------------------
      ---用例1执行---
      ------------------------------------------------Captured stdout call ----------------------------------------------------
      ---用例1执行---
      -----------------------------------------------Captured stdout call -----------------------------------------------------
      ---用例1执行---
      ================================ short test summary info ====================================
      FAILED test_demo.py::TestCase::test_01 - assert False
      ==================================== 1 failed, 3 rerun in 3.08s ==========================================
      

      用例失败后又重试运行了三次。

  • 装饰器方式

    • 语法:

      @pytest.mark.flaky(reruns=3, reruns_delay=1)#3是重试次数,1是每次间隔1秒
      
    • 代码示例:

      import pytest
      
      class TestCase():
      
          @pytest.mark.flaky(reruns=3, reruns_delay=1)
          def test_01(self):
              print("---用例1执行---")
              assert False
      
    • 运行效果:

      test_demo.py::TestCase::test_01 RERUN                                    [100%]
      test_demo.py::TestCase::test_01 RERUN                                    [100%]
      test_demo.py::TestCase::test_01 RERUN                                    [100%]
      test_demo.py::TestCase::test_01 FAILED                                   [100%]---用例1执行---
      ---用例1执行---
      ---用例1执行---
      ---用例1执行---
      FAILED test_demo.py::TestCase::test_01 - assert False
      ========================= 1 failed, 3 rerun in 3.06s ==========================
      

      用例失败后又重试运行了三次。

  • 注意:

    不可以与类,模块还有包级别的fixture装饰器一起使用: @pytest.fixture()
    该插件与pytest-xdist的 --looponfail 标志不兼容
    该插件在使用pdb调试时候会有不兼容性
    最后总结,这个插件虽然还用,但是坑还是不少,建议主要使用失败重试次数和重试间隔的功能即可。

标签:插件,12,demo,py,---,用例,pytest,test
From: https://www.cnblogs.com/ckxingchen/p/17057182.html

相关文章

  • 12.Requests【接口请求】requests模拟cookies传参
    一、前言Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来......
  • FMC DA子卡设计原理图:FMCJ465-2路 16bit 12.6GSPS FMC DA子卡
    FMCJ465-2路16bit12.6GSPSFMCDA子卡一、板卡概述:   FMCJ465是一款转换速率最高为12.6GSPS的 DAC回放板,DAC位数16bit; 板卡基于ADI的AD9172系列......
  • 12.Selenium【元素操作】模拟操作页面元素
    一、前言前面的课程我们已经学习了定位元素的八大方法,其实在实际工作中只需掌握xpath定位即可满足工作需求。定位元素后,我们得到一个元素对象,从这节课开始我们开始针对这......
  • OI 2012
    目录OI2012NOIP2179[NOI2012]骑行川藏ProblemHintSolutionCTSC清华集训2012P5933[清华集训2012]串珠子ProblemSolutionHAOIP2220[HAOI2012]容易题ProblemSolutionP222......
  • 12_百钱买百鸡
    思路:用循环遍历所有条件,注意每层循环结果终止条件为100钱最大化买鸡的数量(向下取整//)+1(range的最后一位取不到)#12百钱买百鸡foriinrange(1,int(100/5)+1):#公鸡最大......
  • 手写笔记12:初探ConcurrentHashMap?[分段锁]
     ......
  • MybatisPlus常用插件
    分页插件MyBati-Plus自带分页插件,只要简单的配置即可实现分页功能。添加配置类​​MyBatisPlusConfig​​。packagecom.dawn.mybatisplus.config;importcom.baomidou.m......
  • 开源Vue表格组件,表格插件源码
    开源Vue表格组件,表格插件源码前言:关于html里面原生的table,通常满足不了程序员的要求。所以开发了一款表格插件,其功能有:1导入json格式数据后,自动填充表格。表格长宽自适应、......
  • UVA12299 RMQ with Shifts
    简要题意你需要维护一个长为\(n\)的序列\(a\),支持以下操作:shift(i1,i2,...,ik)对于\(1\leqp\leqk\),将\(a_{i_p}\)赋值为\(a_{i_{(p\bmodk)+1}}\)。que......
  • skycons.js 基于canvas的天气动态js插件
    skycons.js基于canvas的天气动态js插件skycons.js是一个开源的javascript天气动画图标渲染器。相当于gif动图一样。skyconsCDN地址:https://www.bootcdn.cn/skycons/20个图......