如何将参数从"conftest,py"传递到测试文件(pytest)?



如何将参数从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,这个函数不会作为测试用例运行。

相关内容

  • 没有找到相关文章

最新更新