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

Pytest的测试用例相关问题总结

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 

失败重跑 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("测试完成")

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

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。


http://www.kler.cn/a/371338.html

相关文章:

  • 【分布式知识】分布式对象存储组件-Minio
  • Flume采集Kafka数据到Hive
  • PART 1 数据挖掘概论 — 数据挖掘方法论
  • 中小企业设备管理:Spring Boot实现指南
  • uniapp的IOS证书申请(测试和正式环境)及UDID配置流程
  • Linux 应用领域
  • Linux下安装软件
  • 江协科技STM32学习- P22 实验-ADC单通道/ADC多通道
  • 交叉编译 lmbench(riscv64)
  • synchronized进阶原理
  • Python实现全国岗位招聘信息可视化分析(源码+论文+部署讲解)
  • 中国分省统计面板数据(2004-2023)-最新出炉_附下载链接
  • JavaEE初阶------网络编程续+传输层UDP协议介绍
  • Educational Codeforces Round 171 (Rated for Div. 2) A~E
  • 【Linux】动静态库:构建强大软件生态的基石
  • 张量分析与连续介质力学
  • 【vue】07.自定义指令
  • GitHub Copilot将支持来自Anthropic、Google和OpenAI的模型
  • 双指针——对撞指针与左右指针
  • Twitter网页版怎么登录?详细步骤与常见问题解答
  • kotlin的this和it用法
  • ffmpeg视频滤镜:膨胀操作-dilation
  • 算法:常见位运算技巧总结
  • Dirichlet分布生成联邦学生non-iid数据
  • css实现背景色的斑马条效果
  • 如何用李萨如图形测正弦信号的频率?若不使用李萨如图形,如何用示波器测交流信号频率?