这适用于Windows,没有问题,但在Linux上崩溃。
python setup.py test --addopts '--config myconf.ini'
我已经定义了一个自定义参数,用于测试以通过配置文件提供测试用户凭据:
tests/conftest.py
def pytest_addoption(parser):
parser.addoption('--config', default='conf.ini', help='Path to the testing config file.')
@pytest.fixture(scope='session')
def configfile(request):
return request.config.getoption("--config")
这是我在测试文件中使用它的方式:
def test_foo(configfile):
print(configfile)
在Windows上,这很好用。但是,在Linux上,我得到了这个(setup.cfg配置为调用pytest,所以这是pytest的错误输出)
usage: setup.py [options] [file_or_dir] [file_or_dir] [...]
setup.py: error: unrecognized arguments: --config
inifile: None
rootdir: /uupmaker
有趣的是,如果我将文件名传递给--config fn
不存在,则不会抛出任何错误并且测试正常运行(尽管好像没有定义配置文件)。
我忽略了什么吗?为什么这不起作用?
修改:pip freeze --all
输出:
certifi==2017.7.27.1
chardet==3.0.4
colorama==0.3.9
coverage==4.4.1
defusedxml==0.5.0
idna==2.6
jenkinsapi==0.3.4
jira==1.0.10
lxml==3.8.0
oauthlib==2.0.3
pbr==3.1.1
pip==9.0.1
py==1.4.34
pytest==3.2.2
pytest-runner==2.12.1
python-dateutil==2.6.1
pytz==2017.2
reaver==0.1.5
requests==2.18.4
requests-oauthlib==0.8.0
requests-toolbelt==0.8.0
setuptools==28.8.0
six==1.10.0
teamcity-messages==1.21
urllib3==1.22
使用Python 3.6.1
setup.cfg
:
[aliases]
test=pytest
这是我的最小工作示例:https://github.com/melkamar/pytest-setuppy-err
只需克隆该文件夹并运行python3 setup.py test --addopts "-s --config foo.bar"
, 就会在Linux上失败。