无法获得pytest了解关于设置命令行参数(Can't get pytest to unde

2019-07-03 16:09发布

所以,我一直在试图让pytest上运行基于一些命令行参数不同的环境中硒的测试。 但是,不断抛出这个错误:

TypeError: setup_class() takes exactly 2 arguments (1 given)

它似乎理解这一点就是setup_class需要两个参数,但host没有被通过。 下面是代码setup_class

def setup_class(cls, host):
        cls.host = host

这里是conftest.py文件:

def pytest_addoption(parser):
    parser.addoption("--host", action="store", default='local',
        help="specify the host to run tests with. local|stage")

@pytest.fixture(scope='class')
def host(request):
    return request.config.option.host

令人感到奇怪的是, host正在由功能(所以,如果我做一个test_function,并通过主机作为一个参数,它得到它就好了),它仅仅是看到setup是不工作的灯具。

我环顾四周,发现这一点, pytest -里面setup_module使用funcargs但似乎并没有工作(而且由于2.3已经过时。

有谁知道我做错了吗? 使用py.test 2.3.2。

谢谢

Answer 1:

setup_module /类/方法和朋友不能直接pytest灯具工作。 做等价的pytest-2.3的方法是使用autouse灯具 。 如果可以的话,最好通过灯具明确地测试功能或把一个usefixtures标记上的类或模块。



Answer 2:

从设置功能内访问命令行选项,你可以使用pytest.config对象。 下面是一个例子...需要适应。

import pytest

def setup_module(mod):
    print "Host is %s" % pytest.config.getoption('host')


文章来源: Can't get pytest to understand command-line arguments on setups