如何将参数从conftest.py
传递到test
文件?
conftest.py
import sys,pytest
def tear_down():
print("teardown")
def pytest_addoption(parser):
parser.addoption("--a1", action="store", default="some_default_value", help="provide a1")
parser.addoption("--b1", action="store", default=None, help="provide b1")
parser.addoption("--c1", action="store", default=None, help="provide c1")
@pytest.fixture(autouse=True)
def set_up(request):
print("set up")
a1 = request.config.getoption("--a1")
b1 = request.config.getoption("--b1")
c1 = request.config.getoption("--c1")
if not(b1) and not(c1):
sys.exit("Both values can't be empty")
if b1 and c1:
sys.exit("provide either b1 or c1, not both")
在test.py
中,我需要a,b & c
访问所有这些参数。我该怎么做?
test.py
import pytest
class Test1:
def fun1(self,a,b="",c=""):
print("task1")
def fun2(self,a,b="",c=""):
print("task2")
class Test2:
def fun12(self,a,b="",c=""):
print("task12")
def fun34(self, a, b="", c=""):
print("task34")
我是 pytest 的新手。你能帮帮我吗?
这已经被回答了很多次了。您可以在此处的官方文档中轻松找到它。了解如何搜索解决方案和阅读文档,这是一项无价的技能。
要回答您的问题,您可以这样做:
conftest.py
import pytest
@pytest.fixture(autouse=True)
def set_up(request):
return {"a": 1, "b": 2, "c": 3}
test.py
import pytest
class Test1:
def test_fun1(self, set_up):
print("{0} - {1} - {2}".format(set_up["a"], set_up["b"], set_up["c"]))
我省略了我们示例的其余部分,以便专注于您错过的内容。我还重命名了测试函数,因为默认情况下,pytest 只会发现以test
开头的函数作为精算测试用例: https://docs.pytest.org/en/latest/reference.html#confval-python_functions 因此,除非您更改例如pytest.ini
,这个函数不会作为测试用例运行。