首页 > 其他分享 >pytest 执行py文件中的多个case,case 顺序为随机执行,且可以设置case执行的次数。

pytest 执行py文件中的多个case,case 顺序为随机执行,且可以设置case执行的次数。

时间:2023-10-12 11:14:46浏览次数:22  
标签:case count random py 次数 pytest 执行

pip install pytest pytest-random-order

要在pytest中执行py文件中的多个case,并且按照随机顺序执行,并设置case执行的次数,您可以使用pytest的参数化(parametrize)功能和pytest-random-order插件。

首先,确保您已经安装了pytest和pytest-random-order插件。您可以使用以下命令在终端中安装它们:

pip install pytest pytest-random-order

然后,创建一个测试文件,例如test_cases.py,并在其中定义多个case函数。

# test_cases.py

import pytest

@pytest.mark.parametrize("value", [1, 2, 3])
def test_case(value):
    assert value > 0

在这个例子中,我们定义了一个参数化的测试函数test_case,它接受一个参数value,并用pytest.mark.parametrize标记它。test_case函数断言value大于0。在这个例子中,我们定义了三个case,参数分别为1、2和3。

接下来,创建一个名为conftest.py的文件,用于配置pytest的行为。在conftest.py文件中,我们将使用pytest-random-order插件来实现随机执行case的顺序和设置case执行的次数。

# conftest.py

import pytest
from pytest_random_order import random_order

pytest_plugins = ["pytest_random_order"]

# 设置case执行的次数
@pytest.hookimpl(tryfirst=True)
def pytest_collection_modifyitems(items):
    for item in items:
        item.config.option.count = 3  # 设置case执行的次数

# 设置随机执行case的顺序
pytest_collection_modifyitems = random_order(pytest_collection_modifyitems)

在上面的代码中,我们使用pytest.hookimpl装饰器将自定义函数注册为pytest插件的钩子。pytest_collection_modifyitems钩子函数用于修改测试集合的项目,通过item.config.option.count来设置case的执行次数。在这个例子中,我们将case的执行次数设置为3。

现在,您可以在终端中运行以下命令来执行测试文件中的多个case,以随机顺序执行,并设置每个case的执行次数为3:

pytest test_cases.py

pytest会在终端中显示执行的case的详细结果。

希望这可以满足您的需求!

 

继续上面的,case随机执行,但是每条case执行的次数可能不一样,比如第一条执行3次,第二条执行2次,但是不能第一条执行3次后,再执行第二条case的2次,必须第一条的case执行1次后执行第二条case,然后在执行第一条case,在执行第二条case。

 

要实现您描述的逻辑,您可以使用循环和变量来控制每个case的执行次数。下面是一个示例代码,演示了如何实现这个逻辑:

import random

# 定义每个case的执行次数
case1_count = 3
case2_count = 2

# 循环执行case
while case1_count > 0 or case2_count > 0:
    # 随机选择要执行的case
    case = random.choice([1, 2])

    if case == 1 and case1_count > 0:
        # 执行第一条case
        print("Executing case 1")
        case1_count -= 1
    elif case == 2 and case2_count > 0:
        # 执行第二条case
        print("Executing case 2")
        case2_count -= 1

在这个示例代码中,我们使用case1_countcase2_count变量来跟踪每个case的执行次数。然后,我们使用一个循环来不断选择要执行的case,直到每个case的执行次数都为零。在每个case的条件语句中,我们执行相应的操作,并将该case的执行次数减少1。

您可以根据需要修改以上示例代码,以适应您实际的case和执行逻辑。希望这可以帮助到您!

标签:case,count,random,py,次数,pytest,执行
From: https://www.cnblogs.com/zyf531/p/17759034.html

相关文章

  • 《动手学深度学习 Pytorch版》 8.6 循环神经网络的简洁实现
    importtorchfromtorchimportnnfromtorch.nnimportfunctionalasFfromd2limporttorchasd2lbatch_size,num_steps=32,35train_iter,vocab=d2l.load_data_time_machine(batch_size,num_steps)8.6.1定义模型num_hiddens=256rnn_layer=nn.RNN(len(......
  • 交通标志识别系统python+TensorFlow+算法模型+Django网页+数据集
    一、介绍交通标志识别系统。技术涉及:Python编程语言开发TensorFlow搭建算法模型对数据集进行训练得到一个精度较高的模型文件Django开发网页端界面平台实现对58种交通标志图片进行识别二、效果图片展示三、演示视频and代码视频+代码+介绍:https://s7bacwcxv4.feishu.......
  • Jmeter - 定时执行jxm脚本实现稳定性测试
    一、背景1、背景 有个需求需要对某个应用做稳定性测试。2、参考文章链接:https://blog.csdn.net/SomethingBeTrue/article/details/126310730https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/schtasks-create二、实现1、构想用jmeter......
  • python 基础笔记-函数
    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段·。   好处为: 一可以把程序中相对独立的功能模块抽取出来,减少重读代码的编写; 二是将来可以以重复的使用这些功能模块https://www.clw9335.com/zx/index-htm-page-5.html  定义一个函数 你可以定义一......
  • python pyautogui AttributeError: module 'pyscreeze' has no attribute 'locateOnW
    目录pythonpyautoguiAttributeError:module'pyscreeze'hasnoattribute'locateOnWindow'pythonpyautoguiAttributeError:module'pyscreeze'hasnoattribute'locateOnWindow'安装好pyautogui后测试脚本报错如标题这个报错百度查询是版本过高导致......
  • Python word'str'(字符串前缀string prefix)的种类
    Python字符串前缀(Stringprefix) r'string'r'',用法是不会对后方字符串中的转义符进行转义,如: str=r'\n'print(str)#会直接输出\n,并不会输出换行 f'string'f'',用法是对字符进行格式化就和str.format()一样,会对{}进行格式化,如: str=f'你好,{}'......
  • 代码随想录算法训练营第一天(python) | 704. 二分查找、27. 移除元素。
    Leetcode704二分查找题目链接:704二分查找关键点思路:1、是否要进入到while部分的代码是left<=right还是left<right,看[left,right]是否是合法区间.例如[1,1]是合法区间,取<=;[1,1)非合法区间,取<。2、缩小区间时,考虑边界是否已经比较过。左闭右闭区......
  • Python 集合(Sets)1
    集合集合用于在单个变量中存储多个项。集合是Python中的4种内置数据类型之一,用于存储数据集合,其他3种是列表(List)、元组(Tuple)和字典(Dictionary),它们都具有不同的特性和用途。集合是一种无序、不可更改(*)、无索引的集合。创建一个集合集合用大括号表示。示例,创建一个集合:......
  • 百度飞桨应用实战暨《Python小白逆袭大神》课程学习记录及心得
    课程介绍本次课程是百度深度学习7日打卡第六期,由飞桨深度学习学院的老师进行授课。课程定位:带领零基础学员从Python进入人工智能领域,即使不懂人工智能也能学会。课程形式:B站直播加回放,微信群答疑课程亮点:使用源于产业实践的开源深度学习平台飞桨(PaddlePaddle)简单学习深度学习......
  • pytorch(8-6) 循环神经网络的简洁实现
     https://zh.d2l.ai/chapter_recurrent-neural-networks/rnn-concise.html# 86循环神经网络的简洁.pyimporttorchfromtorchimportnnfromtorch.nnimportfunctionalasFfromd2limporttorchasd2lfromAPI_86import*batch_size,num_steps=32,35tra......