pytest学习和使用-Pytest如何重复执行用例?(pytest-repeat)

1 使用场景

  • 为了排查某些问题,我们可能需要重复去执行某个用例进行问题分析;

  • 一些场景下,自动化测试时候某个用例时好时坏,为了排查这类问题,我们可能需要对用例进行重复执行。

pytest-repeat插件

  • 为了重复执行用例,我们可以使用pytest-repeat插件;

  • 详细参考官方教程:https://pypi.org/project/pytest-repeat/

2.1 环境要求
  • Python 2.7, 3.5+ 或 PyPy;

  • pytest 3.6或更高版本。

2.2 插件安装
pip3 install pytest-repeat

3 pytest-repeat使用

3.1 重复测试直到失败
  • pytest的 -x 选项与pytest-repeat结合使用,以强制测试运行程序在第一次失败时停止;

pytest --count=5 -x test_pytest_repeat.py
  • 比如以下:

# -*- coding:utf-8 -*-

# 作者:虫无涯

# 日期:2023/2/28

# 文件名称:test_pytest_repeat.py

# 作用:pytest-repeat插件的使用

# 联系:VX(NoamaNelson)

# 博客:https://blog.csdn.net/NoamaNelson


import random

import time

import pytest



def test_case01():

computer = random.randint(0, 4)

time.sleep(1)

print(computer)

assert computer < 3
  • 输出为:

test_pytest_repeat.py

.0

.2

.3

F


================================================== FAILURES ==================================================

______________________________________________ test_case01[3-5] ______________________________________________


def test_case01():

computer = random.randint(0, 4)

time.sleep(1)

print(computer)

> assert computer < 3

E assert3 < 3


test_pytest_repeat.py:18: AssertionError

========================================== short test summary info ===========================================

FAILED test_pytest_repeat.py::test_case01[3-5] - assert3 < 3

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

======================================== 1 failed, 2 passed in3.13s =========================================
3.2 用例标记执行重复多次
  • 使用 @pytest.mark.repeat(count) ,将代码中某些测试用例标记为执行重复多次;

  • 比如:

# -*- coding:utf-8 -*-

# 作者:虫无涯

# 日期:2023/2/28

# 文件名称:test_pytest_repeat01.py

# 作用:pytest-repeat插件的使用

# 联系:VX(NoamaNelson)

# 博客:https://blog.csdn.net/NoamaNelson


import pytest



@pytest.mark.repeat(8)

def test_case():

print("测试用例执行")



if __name__ == '__main__':

pytest.main(["-s", "test_pytest_repeat01.py"])

  • 输出为:

test_pytest_repeat01.py::test_case[1-8] PASSED [ 12%]测试用例执行


test_pytest_repeat01.py::test_case[2-8] PASSED [ 25%]测试用例执行


test_pytest_repeat01.py::test_case[3-8] PASSED [ 37%]测试用例执行


test_pytest_repeat01.py::test_case[4-8] PASSED [ 50%]测试用例执行


test_pytest_repeat01.py::test_case[5-8] PASSED [ 62%]测试用例执行


test_pytest_repeat01.py::test_case[6-8] PASSED [ 75%]测试用例执行


test_pytest_repeat01.py::test_case[7-8] PASSED [ 87%]测试用例执行


test_pytest_repeat01.py::test_case[8-8] PASSED [100%]测试用例执行



============================== 8 passed in0.04s ==============================

3.3 命令行参数--repeat-scope详解
  • 命令行参数作用:可以覆盖默认的测试用例执行顺序,类似fixture的scope参数;

  • 说明:

作用范围说明
function默认,每个用例重复执行,再执行下一个用例
class以class为单位,重复执行class里面的用例,再执行下一个
module以模块为单位,重复执行模块里面的用例,再执行下一个
session重复整个测试会话,即所有测试用例的执行一次,然后再执行第二次
3.3.1 class示例
# -*- coding:utf-8 -*-

# 作者:虫无涯

# 日期:2023/3/1

# 文件名称:test_pytest_repeat02.py

# 作用:pytest-repeat插件的使用

# 联系:VX(NoamaNelson)

# 博客:https://blog.csdn.net/NoamaNelson


import pytest



class TestCase01():

def test_01(self):

print("假如我有一个亿,")


class TestCase02():

def test_02(self):

print("我一定带你去履行!")
  • 命令行执行:

pytest -s --count=3 --repeat-scope=class test_pytest_repeat02.py
  • 输出为:

test_pytest_repeat02.py 假如我有一个亿,

.假如我有一个亿,

.假如我有一个亿,

.我一定带你去履行!

.我一定带你去履行!

.我一定带你去履行!

.


=============== 6 passed in0.16s ================
3.3.2 module示例
# -*- coding:utf-8 -*-

# 作者:虫无涯

# 日期:2023/3/1

# 文件名称:test_pytest_repeat03.py

# 作用:pytest-repeat插件的使用

# 联系:VX(NoamaNelson)

# 博客:https://blog.csdn.net/NoamaNelson


import pytest


def test_01():

print("假如我有一个亿,")


def test_02():

print("我一定带你去履行!")


class TestCase():

def test_03(self):

print("如果你有一个亿,可以先借我用用,我再带你去履行!")


  • 执行命令:

pytest -s --count=3 --repeat-scope=module test_pytest_repeat03.py
  • 输出为:

test_pytest_repeat03.py 假如我有一个亿,

.我一定带你去履行!

.如果你有一个亿,可以先借我用用,我再带你去履行!

.假如我有一个亿,

.我一定带你去履行!

.如果你有一个亿,可以先借我用用,我再带你去履行!

.假如我有一个亿,

.我一定带你去履行!

.如果你有一个亿,可以先借我用用,我再带你去履行!

.


================= 9 passed in0.15s =================

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

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

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值