【自动化测试】Pytest框架 —— 跳过测试和失败重试

1、Pytest跳过测试用例

自动化测试执行过程中,我们常常出现这种情况:因为功能阻塞,未实现或者环境有问题等等原因,一些用例执行不了, 如果我们注释掉或删除掉这些测试用例,后面可能还要进行恢复操作,这时我们就可以配置跳过这些用例。

Pytest测试框架中存在两个跳过测试的方法:skipskipif 。

(1)无条件跳过skip

skip方法为无条件跳过测试用例。

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

(2)有条件跳过skipif

skipif方法为有条件跳过测试用例,条件为真跳过。

使用方法:@pytest.mark.skipif(condition=跳过的条件, reason=跳过的原因),

标记在需要符合条件跳过的测试用例上。

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

(3)练习

  1. """

  2. 1.学习目标

  3. 掌握pytest中跳过测试方法

  4. 2.操作步骤

  5. skipif(condition=判断条件,reason=跳过原因)

  6. 使用时放置在需要跳过的用例之前

  7. @pytest.mark.skipif(条件,原因) # 当条件为真,跳过执行

  8. 3.需求

  9. """

  10. # 导入pytest

  11. import pytest

  12. # 编写测试用例

  13. def login_data():

  14. return "jerry", "123456"

  15. # 无条件跳过

  16. @pytest.mark.skip

  17. def test_register():

  18. """注册用例"""

  19. print("注册步骤")

  20. assert False

  21. # 当条件为真,跳过测试

  22. @pytest.mark.skipif(login_data()[0] == "jerry", reason="jerry用户不存在")

  23. def test_login():

  24. """不记住密码登录"""

  25. username = login_data()[0]

  26. password = login_data()[1]

  27. print(f"输入用户名{username}")

  28. print(f"输入密码{password}")

  29. print("点击登录按钮")

  30. assert username == "jerry"

  31. def test_shopping():

  32. """购物下单"""

  33. print("购物流程")

  34. assert True

  35. if __name__ == '__main__':

  36. pytest.main()

  37. """

  38. 执行结果:跳过一个用例 : 1通过,2跳过

  39. test_pytest_01.py::test_register

  40. test_pytest_01.py::test_login

  41. test_pytest_01.py::test_shopping

  42. ======================== 1 passed, 2 skipped in 0.04s =========================

  43. Process finished with exit code 0

  44. SKIPPED (unconditional skip)

  45. Skipped: unconditional skip

  46. SKIPPED (jerry用户不存在)

  47. Skipped: jerry用户不存在

  48. 购物流程

  49. PASSED

  50. """

  51. # 注:跳过的用例测试结果标识为s

2、Pytest失败重试

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

前提:

Pytest测试框架失败重试需要下载pytest-rerunfailures插件。

安装方式:pip install pytest-rerunfailures

Pytest实现失败重试的方式:

方式一:在命令行或者main()函数中使用

pytest.main(['-vs','test_a.py','--reruns=2'])(这种方式没有实现成功,可能自己环境的问题)

或者:

pytest -vs ./test_a.py --reruns 2 --reruns-delay 2(可以)

表示:失败重试2次,在每次重试前会等到2秒。

说明: reruns为重跑次数,reruns_delay为间隔时间,单位s

方式二:在pytest.ini配置文件中使用(推荐)

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

  1. [pytest]

  2. addopts = -s --reruns 2 --reruns-delay 2

  3. testpaths = scripts

  4. python_files = test_01.py

  5. python_classes = Test*

  6. python_functions = test*

示例:使用第二种方式:

 
  1. """

  2. 1.学习目标

  3. 掌握pytest中用例失败重试方法

  4. 2.操作步骤

  5. 2.1 安装 pytest-rerunfailures

  6. pip install pytest-rerunfailures

  7. 2.2 使用 在pytest.ini文件中,添加一个命令行参数

  8. --reruns n # n表示重试次数

  9. 3.需求

  10. """

  11. # 1.导入pytest

  12. import pytest

  13. # 2.编写测试用例

  14. @pytest.mark.run(order=2)

  15. def test_login():

  16. """登录用例"""

  17. print("登录步骤")

  18. assert "abcd" in "abcdefg"

  19. @pytest.mark.run(order=1)

  20. def test_register():

  21. """注册用例"""

  22. print("注册步骤")

  23. assert False

  24. @pytest.mark.run(order=4)

  25. def test_shopping():

  26. """购物下单"""

  27. print("购物流程")

  28. assert True

  29. @pytest.mark.run(order=3)

  30. def test_cart():

  31. """购物车用例"""

  32. print("购物车流程")

  33. assert True

  34. if __name__ == '__main__':

  35. pytest.main(['-vs', 'test_01.py', '--reruns=2'])

  36. # pytest ./pytest_demo/test_01.py --reruns 10 --reruns-delay 1

  37. #

  38. """

  39. 执行结果:注意有两个:2 rerun

  40. ==================== 1 failed, 3 passed, 2 rerun in 0.09s =====================

  41. test_01.py::test_register 注册步骤

  42. RERUN

  43. test_01.py::test_register 注册步骤

  44. RERUN

  45. test_01.py::test_register 注册步骤

  46. FAILED

  47. pytest_demo\test_01.py:20 (test_register)

  48. @pytest.mark.run(order=1)

  49. def test_register():

  50. ""注册用例""

  51. print("注册步骤")

  52. > assert False

  53. E assert False

  54. test_01.py:25: AssertionError

  55. 登录步骤

  56. PASSED购物车流程

  57. PASSED购物流程

  58. PASSED

  59. """

注意:如果设置失败重试5次,在重试的过程中成功了,就不用全部跑完5次重试,这里需要注意一下。 

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 28
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值