专栏首页自动化、性能测试Pytest系列(13)- 重复执行用例插件之pytest-repeat的详细使用

Pytest系列(13)- 重复执行用例插件之pytest-repeat的详细使用

如果你还想从头学起Pytest,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

前言

  • 平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来
  • 自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,或者针对某个模块的用例重复执行多次

环境前提

  • Python 2.7、3.4+或PyPy
  • py.test 2.8或更高版本

安装插件

pip3 install pytest-repeat -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

快速入门

结合之前讲到的失败重跑、输出html报告插件来敲命令行

两种方式皆可,等号或空格

  • count=2
  • count 2
pytest --html=report.html --self-contained-html  -s --reruns=5 --count=2 10fixture_request.py

重复测试直到失败(重点!)

  • 如果需要验证偶现问题,可以一次又一次地运行相同的测试直到失败,这个插件将很有用
  • 可以将pytest的 选项与pytest-repeat结合使用,以强制测试运行程序在第一次失败时停止

-x

py.test --count=1000 -x test_file.py

小栗子

def test_example():
    import random
    flag = random.choice([True, False])
    print(flag)
    assert flag

执行命令

pytest -s --count 5 -x 13repeat.py

执行结果

@pytest.mark.repeat(count)

如果要在代码中将某些测试用例标记为执行重复多次,可以使用 @pytest.mark.repeat(count)

@pytest.mark.repeat(5)
def test_repeat():
    print("测试用例执行")

执行命令

pytest -s 13repeat.py

执行结果

--repeat-scope

命令行参数

作用:可以覆盖默认的测试用例执行顺序,类似fixture的scope参数

  • function:默认,范围针对每个用例重复执行,再执行下一个用例
  • class:以class为用例集合单位,重复执行class里面的用例,再执行下一个
  • module:以模块为单位,重复执行模块里面的用例,再执行下一个
  • session:重复整个测试会话,即所有测试用例的执行一次,然后再执行第二次

案例一:class

class Test_repeat:
    def test_repeat3(self):
        print("测试用例执行333")

class Test_repeat2:
    def test_repeat3(self):
        print("测试用例执行444")

执行命令

pytest -s --count=2 --repeat-scope=class 13repeat.py

执行结果

案例二:module

def test_repeat1():
    print("测试用例执行111")


def test_repeat2():
    print("测试用例执行222")


class Test_repeat:
    def test_repeat3(self):
        print("测试用例执行333")

执行命令

pytest -s --count=2 --repeat-scope=module 13repeat.py

执行结果

兼容性问题

pytest-repeat不能与unittest.TestCase测试类一起使用。无论--count设置多少,这些测试始终仅运行一次,并显示警告

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Pytest系列(16)- 分布式测试插件之pytest-xdist的详细使用

    https://www.cnblogs.com/poloyy/category/1690628.html

    小菠萝测试笔记
  • Pytest系列(7) - skip、skipif跳过用例

    https://www.cnblogs.com/poloyy/category/1690628.html

    小菠萝测试笔记
  • Pytest系列(18)- 超美测试报告插件之allure-pytest的基础使用

    https://www.cnblogs.com/poloyy/category/1690628.html

    小菠萝测试笔记
  • 机器人自主完成手术

    据美国科学促进会网站2016年5月5日报道,研究人员首次利用一台受监控的自主机器人成功完成软组织手术。该机器人在猪肠道手术中的表现战胜了外科专家和目前的机器人辅...

    人工智能快报
  • vue填坑记录:axios 返回中文乱码问题

    以前接口都是php写的,echo 出 json 串给页面jQuery ajax用的。

    shirishiyue
  • 【python-leetcode103-树的宽度遍历】二叉树的锯齿形层次遍历

    给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

    绝命生
  • 初版storm项目全流程自动化测试代码实现

      由于项目需要,写了版针对业务的自动化测试代码,主要应用场景在于由于业务日趋复杂,一些公共代码的改动,担心会影响已有业务。还没进行重写,但知识点还是不少的与大...

    用户3003813
  • linux 如何实现主机之间跨路由通信

    图中可以看出,我们一共需要六个网段,我们可以在虚拟机中添加新的网段(VMnet10—VMnet16),具体步骤如图:

    用户4877748
  • 关于首屏时间采集自动化的解决方案

    关于首屏 首屏时间是指从转向该页面到屏幕中该页面所有内容都可见时的时间。已经有太多的关于首屏时间的计算,在本文中并不重复阐述这些已经被提出或者实现的方案,而旨...

    欲休
  • LinkedBlockingQueue

    大学里的混子

扫码关注云+社区

领取腾讯云代金券