是否有一种方法来保存参数的值,由pytest夹具提供:
这里有一个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"
好的-一切正常,但是有没有一种方法可以在测试之外获得参数
的值-例如使用一些内置的pytest函数pytest.get_fixture_value[参数]
编辑-详细解释我想达到的目标
我正在编写一个模块,它部署并在部署之后为测试提供参数,并在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\u to\u serialized\u python\u tuple test\u to\u run运行他的测试,其中这个tuple将以正确的顺序包含为这个参数提供的值。我会告诉那个家伙(有测试)把这个装饰器添加到所有测试中,他希望我提供参数。此装饰器将如下所示:
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
decorator函数应该如下所示:
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
你可以使用pytest函数config.cache,像这样
def function_1(request):
request.config.cache.set("user_data", "name")
...
def function_2(request):
request.config.cache.get("user_data", None)
...
这里有更多关于它的信息
https://docs.pytest.org/en/latest/reference/reference.html#std-夹具缓存https://docs.pytest.org/en/6.2.x/cache.html
将该参数设置为os环境变量,然后通过
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"
我正在使用pytest lazy fixture
获取任何fixture的值:
pip install pytest lazy fixture
或pipenv install pytest lazy fixture
fixture_value = pytest.lazy_fixture('fixture')
固定装置必须用报价单包装
本文向大家介绍python pytest进阶之fixture详解,包括了python pytest进阶之fixture详解的使用技巧和注意事项,需要的朋友参考一下 前言 学pytest就不得不说fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一样,如果不学fixture那么使用pytest和使用unittest是没什么区别的(个人理解)。
本文向大家介绍python pytest进阶之xunit fixture详解,包括了python pytest进阶之xunit fixture详解的使用技巧和注意事项,需要的朋友参考一下 前言 今天我们再说一下pytest框架和unittest框架相同的fixture的使用, 了解unittest的同学应该知道我们在初始化环境和销毁工作时,unittest使用的是setUp,tearDown方法,
问题内容: 我正在尝试使用Swift从URL获取参数。假设我有以下网址: 如何获取test1和test2的值? 问题答案: 您可以使用以下代码获取参数 像这样调用方法 其他扩展方法:
问题内容: 考虑以下Pytest: 该测试使用Pytest固定装置,其本身具有属性。在测试中迭代该属性,以便仅在每个in的断言均成立的情况下测试才通过。 但是,我实际上想做的是生成3个测试,其中2个应该通过,其中1个将失败。我试过了 但这导致 据我了解,在Pytest固定装置中,函数“成为”其返回值,但是在对参数进行参数化时,这似乎尚未发生。如何以所需的方式设置测试? 问题答案: 从 pytest
上一章节,主要介绍了一下如何使用不同 location 进行协作,对 location 进行糅合,往往都是要需要参数的二次调整。如何正确获取传递参数、设置参数,就是你的必修课了。本章目的是给出在 OpenResty 的世界中,我们如何正确获取、设置 uri 参数。 获取请求 uri 参数 首先看一下官方 API 文档,获取一个 uri 有两个方法:ngx.req.get_uri_args、ngx.
我们经常需要获取用户传递的数据,包括 Get、POST 等方式的请求,beego 里面会自动解析这些数据,你可以通过如下方式获取数据: GetString(key string) string GetStrings(key string) []string GetInt(key string) (int64, error) GetBool(key string) (bool, error) Get