Python Can';t获取pytest以了解设置上的命令行参数

Python Can';t获取pytest以了解设置上的命令行参数,python,unit-testing,testing,command-line-arguments,pytest,Python,Unit Testing,Testing,Command Line Arguments,Pytest,所以我一直在尝试让pytest基于一些命令行参数在不同的环境中运行selenium测试。但它不断抛出这个错误: TypeError: setup_class() takes exactly 2 arguments (1 given) 似乎可以理解,setup\u class接受两个参数,但是没有传递host。以下是设置\u类的代码: def setup_class(cls, host): cls.host = host 下面是conftest.py文件: def pytest

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

TypeError: setup_class() takes exactly 2 arguments (1 given)
似乎可以理解,
setup\u class
接受两个参数,但是没有传递
host
。以下是
设置\u类
的代码:

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_函数并将host作为一个参数传递,它会得到很好的结果),只是
设置
夹具不起作用

我环顾四周发现了这个,但它似乎不起作用(而且它从2.3开始就过时了)

有人知道我做错了什么吗?使用py.test 2.3.2


感谢设置模块/类/方法,朋友们不能直接使用pytest Fixture。pytest-2.3的等效方法是使用。如果可以,最好明确地将Fixture传递给测试函数,或者在类或模块上添加一个。要从设置函数内部访问命令行选项,可以使用pytest.config对象。下面是一个示例…根据需要进行调整

import pytest

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

它说“设备的名称也是smtp,您可以通过在任何测试或设置函数中将名称smtp作为输入参数来访问其结果”。所以我可以在设置中使用它,不?和
autouse
uses
使所有测试都运行该代码,我只希望设置可以运行该代码。我会给你答案。即使你没有回答我的具体答案,但你给了我一个解决方法。这很奇怪,文档说你可以,但似乎不是c无论如何,谢谢。你是对的,这些文档有误导性。或者实际上是,我刚刚上传了一个修复程序,用“夹具功能”替换了“设置功能”。对不起!对于未来的访问者,只需跳过接受的答案并使用它。这比接受的答案更有效,步骤更少。从未来开始