首页 > 其他分享 >软件测试/测试开发全日制培训|Pytest跳过用例和失败重试

软件测试/测试开发全日制培训|Pytest跳过用例和失败重试

时间:2024-01-04 18:32:46浏览次数:28  
标签:py 重试 用例 pytest test 测试用例 跳过 软件测试

软件测试/测试开发全日制培训|Pytest跳过用例和失败重试_用例

前言

在我们日常进行自动化测试时,经常会遇到功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了,如果我们注释掉或删除掉这些测试用例,后面可能还要进行恢复操作,这个时候pytest的跳过测试功能就能帮助我们,先跳过,等到问题解决时,恢复执行即可;同时我们还有可能会遇到需要对失败用例重新运行进行测试的情况,pytest也能满足我们的需求,本文就来给大家介绍一下Pytest跳过用例和失败重试的实现。

跳过测试用例

Pytest测试框架中存在两个跳过测试的方法:skipskipif ,即无条件直接跳过和满足条件跳过。

  • 无条件跳过skip

skip方法为无条件跳过测试用例,使用方法:@pytest.mark.skip标记在需要跳过的测试用例上。

  • 有条件跳过skipif

skipif方法为有条件跳过测试用例,条件满足即跳过该用例,使用方法:@pytest.mark.skipif(condition=跳过的条件, reason=跳过的原因),标记在需要符合条件跳过的测试用例上。

  • 参数condition:跳过的条件,为True则跳过测试,为False则继续执行测试,默认为True。
  • 参数reason:标注跳过的原因,必填参数。

使用示例

# 导入pytest
import pytest


# 编写测试用例
def login_data():
    return "muller", "123456"


# 无条件跳过
@pytest.mark.skip
def test_register():
    """注册用例"""
    print("注册步骤")
    assert False


# 当条件为真,跳过测试
@pytest.mark.skipif(login_data()[0] == "muller", reason="muller用户不存在")
def test_login():
    """不记住密码登录"""
    username = login_data()[0]
    password = login_data()[1]
    print(f"输入用户名{username}")
    print(f"输入密码{password}")
    print("点击登录按钮")
    assert username == "muller"


def test_shopping():
    """购物下单"""
    print("购物流程")
    assert True


if __name__ == '__main__':
    pytest.main()python

----------------
运行结果如下:
============================= test session starts =============================
collecting ... collected 3 items

test_c.py::test_register SKIPPED (unconditional skip)
Skipped: unconditional skip

test_c.py::test_login SKIPPED (muller用户不存在)
Skipped: muller用户不存在

test_c.py::test_shopping 购物流程
PASSED

======================== 1 passed, 2 skipped in 0.02s =========================

Pytest失败重试

Pytest失败重试就是,在执行一次测试脚本时,如果一个测试用例执行结果失败了,则重新执行该测试用例。

我们要实现失败重跑,需要安装一个pytest的配套插件——pytest-rerunfailures,安装命令如下:

pip install pytest-rerunfailures

实现方式:

  • 在命令行或者main()函数中使用

pytest.main(['-vs','test_a.py','--reruns=2'])或者是pytest -vs ./test_a.py --reruns 2 --reruns-delay 2

注: reruns为重跑次数,reruns_delay为间隔时间,单位s。

  • pytest.ini配置文件中使用

pytest.ini配置文件中addopts添加reruns重试参数

[pytest]
addopts = -s --reruns 2 --reruns-delay 2
python_files = test_c.py
python_classes = Test*
python_functions = test*

示例如下:

# 1.导入pytest
import pytest


# 2.编写测试用例
@pytest.mark.run(order=2)
def test_login():
    """登录用例"""
    print("登录步骤")
    assert "abcd" in "abcdefg"


@pytest.mark.run(order=1)
def test_register():
    """注册用例"""
    print("注册步骤")
    assert False


@pytest.mark.run(order=4)
def test_shopping():
    """购物下单"""
    print("购物流程")
    assert True


@pytest.mark.run(order=3)
def test_cart():
    """购物车用例"""
    print("购物车流程")
    assert True


if __name__ == '__main__':
    pytest.main(['-vs', 'test_c.py', '--reruns=2'])

----------------------
运行结果如下:

============================= test session starts =============================
collecting ... collected 4 items

test_c.py::test_login 
test_c.py::test_register 登录步骤
PASSED注册步骤
RERUN
test_c.py::test_register 注册步骤
RERUN
test_c.py::test_register 注册步骤
FAILED
testcase2\test_c.py:110 (test_register)
@pytest.mark.run(order=1)
    def test_register():
        """注册用例"""
        print("注册步骤")
>       assert False
E       assert False

test_c.py:115: AssertionError
购物流程
PASSED购物车流程
PASSED


test_c.py::test_shopping 
test_c.py::test_cart 

============== 1 failed, 3 passed, 4 warnings, 2 rerun in 4.10s ===============

注:如果在达到我们设置的重跑次数前,用例运行成功,则后续次数不会跑完。

总结

Pytest 提供了灵活的机制来跳过不符合条件的测试用例,并在失败时自动重试,这些功能有助于优化测试流程并提高测试的鲁棒性。通过合理地利用这些功能,您可以更有效地管理测试用例,确保测试的稳定性和可靠性。希望本文能够帮到大家!


标签:py,重试,用例,pytest,test,测试用例,跳过,软件测试
From: https://blog.51cto.com/u_15640304/9103685

相关文章

  • 软件测试/测试开发|什么是Python,我们为什么选择Python?
    简介要说最近几年,哪个编程语言是最受欢迎的?学习人数最多的?那非Python莫属,加上人工智能时代的到来,Python热度就更加持续,那么Python为什么能够超越Java和C语言,成为现在最受欢迎的语言呢?本文就带大家一探究竟。Python简介Python发展背景Python是一种高级编程语言,由荷兰人吉多·范罗苏......
  • 软件测试/测试开发|什么是pytest,我们为什么选择pytest?
    前言作为一个程序猿,免不了要为自己写的代码做单元测试,因为我是一个Pythoner,所以最开始用的是unittest测试框架,但是我的使用体验很不好,后面我了解到了pytest,简直能把uinttest秒成渣,在这里和大家一起分享下pytest使用经验,本文先来给大家介绍一下pytest以及它如何安装,运行一下最简单的......
  • 关键字 开发-15 mark标记用例
    pytest可以支持对用例自定义标记,可以把用例按自己的需要归类标记,比如按用例优先级,标记一些smoke冒烟测试用例。1.mark标记基本实现[email protected]_login1():print('test1')@pytest.mark.smokedeftest_login2():print('test2')de......
  • 全日制软件测试开发 | 测试管理圆桌讨论会精彩时刻回顾(上)
    很高兴大家来参加测试管理圆桌讨论会,本次我们邀请了4位嘉宾,他们的工作履历几乎涵盖了目前互联网行业的头部公司。嘉宾介绍Angelia:资深的项目经理,多次搭建研发团队,目前在外企做PMO成员。强哥:曾在阿里担任测试负责人,负责过很多大型项目测试工作,在技术和管理方面都有很深的造诣。涛哥......
  • 软件测试/测试开发|一文告诉你Python列表相关操作
    列表是Python中最常用的数据类型之一。它是一种有序、可变,异构的数据集合,可以存储多个不同类型的元素。列表的特点列表是Python中的一种数据结构,具有以下特点:有序性:列表中的元素按照添加的顺序进行存储,每个元素都有一个对应的索引,可以通过索引访问和操作列表中的元素。可变性:列......
  • Python pytest.main()运行测试用例
    前言前面一直使用命令行运行pytest用例,本篇来学下使用pytest.main()来运行测试用例pytest.main()args传一个list对象,list里面是多个命令行的参数plugins传一个list对象,list里面是初始化的时候需注册的插件不带参数运行importpytest#等同于命令行执行pytest#默认运行的是......
  • 软件测试的八大特性有哪些?
    软件测试是软件开发过程中重要的一环,其目的是发现软件中存在的问题,并提供解决方案。因此,软件测试的八大特性对于保证软件的质量和稳定性至关重要。1、功能性是指软件是否按照需求文档和设计文档正确实现功能,是软件测试最基本的要求。2、性能效率是指软件在不同负载下的响应速度、吞......
  • 08.测试用例设计与评审
    目录 设计方法的选择测试用例编写步骤需求分析测试用例编写测试用例的粒度测试用例评审设计方法的选择 任何情况下,都需要采用等价类划分法,将无限测试变成有限测试在规定了数据范围的情况下,必须采用边界值分析法如果需要关注它的主要功能和业务流程、业务......
  • 01.测试用例价值与体系
    目录 测试用例概念测试用例价值测试用例学习路线测试用例概念 测试用例(TestCase)是为特定的目的而设计的一组测试输入、执行条件和预期的结果的文档通过大量的测试用例来检验软件的运行效果它是指导测试工作进行的依据测试用例价值 指导测试的实......
  • [软件测试] 第三部分 黑盒测试
    目录软件测试期末复习系列课件知识点整合:软件测试基础白盒测试黑盒测试PTA习题汇总:软件测试基础白盒测试-逻辑覆盖测试白盒测试-基本路径测试白盒测试-静态测试黑盒测试-等价类划分黑盒测试-边界值测试黑盒测试-场景法概念与定义黑盒测试:又称功能测试、数据......