pytest二次开发:生成用例参数

@pytest.fixture是一个装饰器,用于声明一个fixture。Fixture是pytest中的一个核心概念,它提供了一种将测试前的准备代码(如设置测试环境、准备测试数据等)和测试后的清理代码(如恢复测试环境、删除临时文件等)与测试用例分离的方法。通过这种方式,测试用例可以更加专注于测试逻辑本身,而不是测试环境的准备和清理。

pytest使用fixture,实现接受一个函数作为输入,函数内部可以包含条件表达式、循环等复杂逻辑,并返回一个参数列表

python 复制代码
import pytest

# 直接传入数组
@pytest.fixture(params=[1,2,3])
def param_complex(request):
    print('--------fixture\t')
    print(request)
    print(request.param)
    return request.param
def test_generatePara(param_complex):
    print('---------param_complex------- test\t')
    print(param_complex)
    assert True




def generate_param(a, b):
    params = []
    ouShu = []
    jiShu = []
    for i in range(a,b):
        if i % 2 == 0:
            ouShu.append(i)
        else:
            jiShu.append(i)
    params.append(ouShu)
    params.append(jiShu)
    return params

#  01 函数执行:generate_param(2,6)在pytest解析fixture声明时执行,生成一个包含多个pytest.param对象的列表
#  02 参数化:测试用例使用param_complex_gene fixture ,pytest将pytest.param对象的列表作为params的值,并为列表中的每个pytest.param对象执行一次测试用例
#  03 fixture函数:对于列表中的每个pytest.param对象,pytest都会调用param_complex_gene fixture函数一次,并将当前的pytest.param对象作为request.param传递给这个函数。然后,param_complex_gene函数返回request.param,即当前的测试参数。
@pytest.fixture(params=generate_param(2,6))
def param_complex_gene(request):
    print('--------fixture param_complex_gene \t')
    print(request)
    print(request.param)
    return request.param

def test_generatePara1(param_complex_gene):

    print('---------param_complex_gene------- test\t')
    print(param_complex_gene)

    assert True

--------fixture

<SubRequest 'param_complex' for <Function test_generatePara[1]>>

1

PASSED [ 20%]---------param_complex------- test

1

--------fixture

<SubRequest 'param_complex' for <Function test_generatePara[2]>>

2

PASSED [ 40%]---------param_complex------- test

2

--------fixture

<SubRequest 'param_complex' for <Function test_generatePara[3]>>

3

PASSED [ 60%]---------param_complex------- test

3

--------fixture param_complex_gene

<SubRequest 'param_complex_gene' for <Function test_generatePara1[param_complex_gene0]>>

[2, 4]

PASSED [ 80%]---------param_complex_gene------- test

[2, 4]

--------fixture param_complex_gene

<SubRequest 'param_complex_gene' for <Function test_generatePara1[param_complex_gene1]>>

[3, 5]

PASSED [100%]---------param_complex_gene------- test

[3, 5]

======= Global cleanup =======

相关推荐
qq_4337169515 小时前
测试分层:减少对全链路回归依赖的探索!
自动化测试·软件测试·功能测试·测试工具·回归·pytest·postman
开心呆哥2 天前
【Android Wi-Fi 操作命令指南】
android·python·pytest
小码哥说测试3 天前
测试分层:减少对全链路回归依赖的探索!
自动化测试·软件测试·人工智能·测试工具·appium·pytest·postman
帅得不敢出门5 天前
Python+Appium+Pytest+Allure自动化测试框架-安装篇
python·appium·自动化·pytest·测试·allure
blues_C5 天前
Pytest-Bdd-Playwright 系列教程(5):仅执行测试用例的收集阶段
自动化测试·测试用例·pytest·bdd
帅得不敢出门7 天前
Python+Appium+Pytest+Allure自动化测试框架-代码篇
python·appium·自动化·pytest·测试·allure
qq_433716958 天前
接口测试 —— Postman 变量了解一下!
自动化测试·软件测试·jmeter·单元测试·pytest·接口测试·压力测试
彳亍2618 天前
【Python单元测试】pytest框架单元测试 配置 命令行操作 测试报告 覆盖率
python·单元测试·pytest
鹿鸣悠悠8 天前
pytest脚本常用的执行命令
pytest