• 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、软件文档一般分为三类:开发文档、产品文档、管理文档1)开发文档描述开发过程本身,基本的开发文档包括:(1)可行性研究报告和项目任务书(2)需求规格说明书(3)功能规格说明书(4)设计规格说明书,包括程序和数据规格说明书(5)开发计划(6)软件集成和测试计划(7)质量保证计划(8)安全和测试信息2)产品文档描述开发过程的产物,基本的产品文档包括:(1)培训手册(2)参考手册和用户指南(3)软件支持手册(4)产品手册和信息广告3)管理文档记录项目信息管理的信息,例如:(1)开发过程的每个阶段的进度和进度变更的记录(2)软件变更情况记录(3)开发团队职责定义(4)项目计划、项目阶段报告(5)配置...
            13 14 1572
            分享
          •   据《华尔街日报》1月7日报道,1月10日,TikTok首席执行官周受资将与欧盟委员会执行副主席、负责竞争事务的维斯塔格(Margrethe Vestager)会面。他还计划与司法专员Didier Reynders、内政专员Ylva Johansson以及负责价值和透明度的副主席Vera Jourova会面。  维斯塔格的一位发言人说,她会面的目的是评估该公司如何准备遵守今年生效的欧盟关于互联网安全和科技公司之间公平竞争的新规定。该发言人称,欧盟委员会也计划与其他科技公司会面。  在被问及即将进行的会面时,欧盟委员会的一位发言人6日表示,欧盟普遍关注TikTok以及其他应用程序的个人数据保护...
            0 0 881
            分享
          • SQL注入是一种注入攻击,可以执行恶意SQL语句。下面本篇文章就来带大家了解一下SQL注入,简单介绍一下防止SQL注入攻击的方法,希望对大家有所帮助。 什么是SQL注入?SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。SQL注入漏洞可能会影响使用SQL数据库(如MySQL,Oracle,SQL Ser...
            11 11 1325
            分享
          •   AMD、英特尔和中国公司都在积极开发和发布新的AI芯片产品,以争取在AI芯片市场的份额,与英伟达展开竞争。AMD预计,2027年全球数据中心AI计算市场规模将超过1500亿美元。  随着英伟达率先占领AI大模型算力芯片市场,并超过万亿市值。而同时,英特尔、AMD和中国GPU芯片公司也在暗暗较劲,希望在AI算力芯片市场中分一杯羹。  9月19日,美国圣何塞举行的IntelOn技术创新大会上,62岁英特尔CEO基辛格(PatGelsinger)“火力全开”,以俯卧撑开场演讲。  此次会议上,基辛格一口气发布一系列新技术产品:基于Intel4(5nm)工艺的英特尔酷睿Ultra处理器,代号“Me...
            0 0 815
            分享
          • 今天我们来说说在 windows 系统上如果有多版本的 python 并存时,如何优雅的进行灵活切换。虽然 Python3 已经出来很久了,虽然 Python2 即将成为历史了,但是因为历史原因,依然有很多公司的老项目继续在使用着 Python2 版本(切换成本太高),所以大多数开发者机器上 Python2 和 Python3 都是并存的,本文主要说明这种情况下如何便捷的在 Python2 和 Python3 之间进行切换。先说明下,本次我们不介绍 virtualenv,也不介绍 pipenv,因为这两个都是为了大型的 Python 工程做准备的,之后会单独文字进行说明。本次是不借助外部工具,...
            1 1 2048
            分享
      • 51testing软件测试圈微信