Nac*_*cht 7 python testing unit-testing command-line-arguments pytest
所以我一直试图让pytest根据一些命令行参数在不同的环境中运行selenium测试.但它不断抛出这个错误:
TypeError: setup_class() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
似乎理解是setup_class
接受2个参数,但是host
没有被传递.这是以下代码setup_class
:
def setup_class(cls, host):
cls.host = host
Run Code Online (Sandbox Code Playgroud)
这是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
Run Code Online (Sandbox Code Playgroud)
奇怪的是,host
函数正在看到它(因此,如果我创建一个test_function并将主机作为参数传递,它就会很好),它只是setup
不起作用的灯具.
我环顾四周,发现这个,pytest - 在setup_module中使用funcargs,但这似乎不起作用(并且它已经过时了2.3.
有谁知道我做错了什么?使用py.test 2.3.2.
谢谢
小智 19
要从安装功能内部访问命令行选项,可以使用pytest.config对象.这是一个例子......根据需要进行调整.
import pytest
def setup_module(mod):
print "Host is %s" % pytest.config.getoption('host')
Run Code Online (Sandbox Code Playgroud)
setup_module/class/method 和朋友不能直接使用 pytest 装置。pytest-2.3 做同样的事情的方法是使用autousefixtures。如果可以的话,最好明确地传递固定装置来测试函数或在类或模块上放置usefixtures 标记。
归档时间: |
|
查看次数: |
6764 次 |
最近记录: |