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

发布时间 2023-10-12 11:06:52作者: hello_tree

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和执行逻辑。希望这可以帮助到您!