pytest - 关于cli调用的无法识别的参数,尽管被定义

时间:2017-11-03 11:47:02

标签: python pytest

这适用于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上失败。

0 个答案:

没有答案