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

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

image.png

前言

在我们日常进行自动化测试时,经常会遇到功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了,如果我们注释掉或删除掉这些测试用例,后面可能还要进行恢复操作,这个时候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 提供了灵活的机制来跳过不符合条件的测试用例,并在失败时自动重试,这些功能有助于优化测试流程并提高测试的鲁棒性。通过合理地利用这些功能,您可以更有效地管理测试用例,确保测试的稳定性和可靠性。希望本文能够帮到大家!

相关文章
|
27天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
82 8
|
1月前
|
测试技术 持续交付
探索软件测试中的自动化测试策略
随着软件开发周期的加速和市场需求的不断增长,传统的手动软件测试方法已难以满足现代软件开发的高效性和准确性要求。本文旨在探讨自动化测试在软件测试中的重要性、实施策略及其对提高软件质量的影响。通过分析自动化测试的优势与挑战,以及提供实用的自动化测试工具和框架选择指南,旨在帮助读者理解并应用自动化测试以提升软件开发效率和产品质量。
|
1月前
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
58 1
|
1天前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
34 15
|
1月前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
1月前
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
65 4
|
1月前
|
监控 测试技术 定位技术
探索软件测试中的自动化测试框架选择与实施###
本文不概述传统意义上的摘要内容,而是直接以一段对话形式引入,旨在激发读者兴趣。想象一下,你是一名勇敢的探险家,面前摆满了各式各样的自动化测试工具地图,每张地图都指向未知的宝藏——高效、精准的软件测试领域。我们将一起踏上这段旅程,探讨如何根据项目特性选择合适的自动化测试框架,并分享实施过程中的关键步骤与避坑指南。 ###
43 4
|
1月前
|
测试技术 持续交付 数据安全/隐私保护
软件测试的艺术与科学:探索自动化测试框架
在软件开发的世界中,测试是确保产品质量的关键环节。本文将深入探讨自动化测试框架的重要性和实现方法,旨在为读者揭示如何通过自动化测试提升软件测试效率和准确性。我们将从测试的基本概念出发,逐步引导读者了解自动化测试框架的设计和实施过程,以及如何选择合适的工具来支持测试活动。文章不仅提供理论知识,还将分享实用的代码示例,帮助读者将理论应用于实践。无论你是测试新手还是经验丰富的开发者,这篇文章都将为你打开一扇通往更高效、更可靠软件测试的大门。
35 1
|
2月前
|
数据可视化 测试技术 API
软件测试中的自动化测试框架选择与实践
在当今快节奏的软件开发环境中,自动化测试成为了确保软件质量和加速交付的关键。本文将探讨自动化测试的重要性,并比较几种流行的自动化测试框架,包括Selenium、Appium和TestComplete。文章还将提供一些最佳实践和案例研究,以帮助读者更好地理解和实施自动化测试策略。
|
2月前
|
Java 测试技术 API
软件测试中的自动化测试框架选择与应用##
在快速迭代的软件开发周期中,选择合适的自动化测试框架对于提高软件质量和开发效率至关重要。本文探讨了当前流行的几种自动化测试框架的特点和适用场景,旨在为软件开发团队提供决策依据。 ##