gpt4 book ai didi

python - 将命令行参数传递给测试模块

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

当运行 python 脚本时,我们可以使用 sys.argv 获取命令行参数并在我们的 python 代码中的任何地方使用它。

当运行 pytest 时,我们可以使用 pytest_addoption 添加命令行参数,但在我看来,我们只能在测试或固定装置中使用它们,我们可以通过任何可以访问选项公开 config 对象。

但在我的例子中,我希望能够从测试模块主体本身访问命令行选项。

是否可以在不需要任何固定装置的情况下以某种方式访问​​ pytest 的配置?

最佳答案

您有多种访问配置对象的方法:

  1. 通过 requestrequest.config 属性 fixture 对象
  2. 通过 pytestconfig fixture
  3. 通过 pytest.config(the config object becomes a module attribute in the pytest_configure hook invocation - 在早期初始化阶段谨慎使用,但您可以在测试中完全依赖它)。这大概就是您要找的东西。
  4. 通过任何对象的 node.config 属性 _pytest.nodes.Node ,例如 Session对象、测试项节点等

示例用法:

# conftest.py
def pytest_addoption(parser):
parser.addoption('--spam', action='store_true', default=False, help='some flag')
# test_spam.py

import pytest


print('accessing option on module level', pytest.config.getoption('--spam'))

def util():
print('accessing option from non-test function', pytest.config.getoption('--spam'))


@pytest.fixture
def myfixture(request, pytestconfig):
print('accessing option in fixture via request', request.config.getoption('--spam'))
print('accessing option in fixture via session', request.session.config.getoption('--spam'))
print('accessing option in fixture via pytestconfig', pytestconfig.getoption('--spam'))


def test_spam(request, pytestconfig):
print('accessing option in fixture via request', request.config.getoption('--spam'))
print('accessing option in fixture via session', request.session.config.getoption('--spam'))
print('accessing option in fixture via pytestconfig', pytestconfig.getoption('--spam'))

等等

关于python - 将命令行参数传递给测试模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53026584/

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