首页 > 解决方案 > 无法从 pytest.fixture 获取数据,而是获取数据位置

问题描述

我正在pytest中测试。这是我的代码

文件1.py

def pytest_addoption(parser):
     parser.addoption('--uid')

@pytest.fixture
def login_id(request,pytestconfig):
    user_id = pytestconfig.getoption('--uid')

    return user_id

它的作用是在 pytest 中使用 cli 参数

文件2.py

@pytest.fixture 
def func(): 
      login(login_id)
      return session()

当我在需要创建会话的模块上执行测试时 login_id 给我的数据为

<函数 login_id 在 0x00000000092F79D8>

我无法获取此数据,如何获取我在 cli 参数中传递的值。

我正在使用 pycharm,python3.5。

cli参数为--uid username

我没有在功能中获取用户名,login而是获取数据的位置。

谢谢并恭祝安康

标签: pythonpycharmintegration-testingpytest

解决方案


如果您想在另一个夹具中使用夹具的值,只需将其作为参数传递:

@pytest.fixture
def login_id(request):
    ...
    return ...

@pytest.fixture 
def func(login_id): 
      login(login_id)
      return session()

除了建议:您不需要该pytestconfig夹具,因为您已经在使用request. 您可以通过request.configlogin_id夹具中获取配置:

@pytest.fixture
def login_id(request):
    user_id = request.config.getoption('--uid')
    return user_id

推荐阅读