运行python脚本时,我们可以使用sys.argv
获取命令行参数,并在python代码中的任何位置使用它。
在运行pytest时,我们可以使用pytest_addoption
添加命令行参数,但是在我看来,我们只能在测试或固定装置中使用它们,我们可以通过暴露{ {1}}个对象。
但是,就我而言,我希望能够从测试模块主体本身访问命令行选项。
是否可以通过某种方式访问pytest的配置而无需任何固定装置?
答案 0 :(得分:1)
您可以通过多种方式访问配置对象:
request
灯具对象的request.config
属性pytestconfig
固定装置pytest.config
(the config object becomes a module attribute in the pytest_configure
hook invocation-在初始阶段应谨慎使用,但在测试中可以完全依靠它)。这大概就是您要寻找的。 li>
_pytest.nodes.Node
子类化的任何对象的node.config
属性,例如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'))
等