IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Pytest学习笔记(25)-重复执行用例插件 pytest-repeat -> 正文阅读

[开发测试]Pytest学习笔记(25)-重复执行用例插件 pytest-repeat

前言

  • 日常业务测试过程中,经常会遇到偶现的bug,需要重复操作来复现bug

  • 自动化测试同样如此,也会需要重复执行用例,来确定用例的稳定性、成功性和复现偶现的bug

  • pytest-repeat 是 pytest 的一个插件,可以重复的执行单个测试或多个测试,也可以自定义重复执行的次数

  • 官方文档:https://pypi.org/project/pytest-repeat/

前提条件

  • Python 2.7、3.5+ 或 PyPy
  • pytest 3.6 或更高版本

插件安装

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

参数介绍

  • –count :指定重复运行的次数

使用详解

举个🌰

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

"""
    __File__   = test_case1.py
    __Project__= _JAuto-Interface
    __Time__   = 2022-03-02 16:57:54
    __Author__ = 黎晟
"""


def test_1():
    print("测试用例1")


def test_2():
    print("测试用例2")

执行命令

pytest -vs --count 3

查看结果在这里插入图片描述

重复执行测试用例直到失败(重点)

  • 当我们验证偶现的问题时,需要不停的重复执行用例,直到用例失败、
  • 可以将pytest的 -x 选项与pytest-repeat结合使用,以强制测试运行程序在第一次失败时停
  • 命令:pytest --count=n -x test_file.py

举个🌰

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

"""
    __File__   = test_count_x.py
    __Project__= _JAuto-Interface
    __Time__   = 2022-03-02 17:08:37
    __Author__ = 黎晟
"""


def test_count_x():
    import random
    n = random.randint(1, 11)
    assert n != 10

执行命令

pytest --count 11 -x test_count_x.py

查看结果在这里插入图片描述

可以看到,在执行了8次后,用例执行失败停止

@pytest.mark.repeat(count)装饰器

如果你想在你的代码中标记一个测试重复多次,你可以使用@pytest.mark.repeat(count)装饰器

举个🌰

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

"""
    __File__   = test_repeat_decorator.py
    __Project__= _JAuto-Interface
    __Time__   = 2022-03-02 17:18:01
    __Author__ = 黎晟
"""

import pytest


@pytest.mark.repeat(3)
def test_repeat_decorator():
    pass

执行命令

pytest test_repeat_decorator.py

查看结果在这里插入图片描述

可以看到,测试用例执行了3次

–repeat-scope

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

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

代码

#!/usr/bin/env python3
# -*- coding:utf-8 -*-

"""
    __File__   = test_repeat_scope.py
    __Project__= _JAuto-Interface
    __Time__   = 2022-03-02 17:23:16
    __Author__ = 黎晟
"""


class TestScope1:
    def test_repeat_scope1(self):
        print("测试用例执行1")


class TestTestScope2:
    def test_repeat_scope2(self):
        print("测试用例执行2")


def test_outside1():
    print("执行class外用例1")


def test_outside2():
    print("执行class外用例2")

执行命令

# 重复执行class级别的用例
pytest -s --count=2 --repeat-scope=class test_repeat_scope.py
# 重复执行class级别的用例
pytest -s --count=2 --repeat-scope=class test_repeat_scope.py

对比结果在这里插入图片描述

可以看到,使用--repeat-scope=class,class下的用例先执行了两次,然后才继续执行class外的用例

可以看到,使用`–repeat-scope=module,同一文件下的用例按顺序执行了两次

兼容性(UnitTest)

不幸的是 pytest-repeat 不能使用 unittest.TestCase 测试类。这些测试将始终运行一次,无论–count,并显示警告

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:45:17  更:2022-03-03 16:45:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 2:53:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码