gpt4 book ai didi

python - pytest - 获取fixture参数的值

转载 作者:太空宇宙 更新时间:2023-11-03 15:13:37 26 4
gpt4 key购买 nike

有没有办法保存pytest fixture 提供的参数值:

这是conftest.py的示例

# content of conftest.py

import pytest

def pytest_addoption(parser):
parser.addoption("--parameter", action="store", default="default",
help="configuration file path")

@pytest.fixture
def param(request):
parameter = request.config.getoption("--parameter")
return parameter

这是 pytest 模块的示例:

# content of my_test.py

def test_parameters(param):
assert param == "yes"

好的 - 一切正常,但是有没有办法在测试之外获取 param 的值 - 例如使用一些内置的 pytest 函数 pytest.get_fixture_value["parameter"]

已编辑 - 详细说明我想要实现的目标

我正在编写一个模块,该模块会部署,然后为测试提供参数,用 pytest 编写。我的想法是,如果有人的测试看起来像这样:

class TestApproachI:
@load_params_as_kwargs(parameters_A)
def setup_class(cls, param_1, param_2, ... , param_n):
# code of setup_class

def teardown_class(cls):
# some code

def test_01(self):
# test code

这个人给了我一个配置文件,它解释了使用哪些参数来运行他的代码,我将分析这些参数(在其他脚本中),然后使用命令 pytest --parameters= 运行他的测试path_to_serialized_python_tuple test_to_run 其中此元组将以正确的顺序包含为此某人参数提供的值。我会告诉那个人(带有测试)将此装饰器添加到他希望我提供参数的所有测试中。这个装饰器看起来像这样:

class TestApproachI:
# this path_to_serialized_tuple should be provided by 'pytest --parameters=path_to_serialized_python_tuple test_to_run'
@load_params(path_to_serialized_tuple)
def setup_class(cls, param_1, param_2, ... , param_n):
# code of setup_class

def teardown_class(cls):
# some code

def test_01(self):
# test code

装饰器函数应该如下所示:

def load_params(parameters):
def decorator(func_to_decorate):
@wraps(func_to_decorate)
def wrapper(self):
# deserialize the tuple and decorates replaces the values of test parameters
return func_to_decorate(self, *parameters)
return wrapper
return decorator

最佳答案

将该参数设置为操作系统环境变量,然后通过os.getenv('parameter')在测试中的任何位置使用它

所以,你可以使用像,

@pytest.fixture
def param(request):
parameter = request.config.getoption("--parameter")
os.environ["parameter"]=parameter
return parameter

@pytest.mark.usefixtures('param')
def test_parameters(param):
assert os.getenv('parameter') == "yes"

关于python - pytest - 获取fixture参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44047224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com