可以通過命令行參數對測試函數進行參數化。 可以將一個燈具作爲一個類的範圍。 我想結合這兩個東西,以便每個類都接收參數化參數,這些參數賦予課程中的燈具。 (基本上,每個命令行參數我需要運行一個非常昂貴的操作,然後針對該操作的結果做各種便宜,快速的測試,並且我不希望重新運行昂貴的操作對於每個廉價的測試,所以我想要一種方法來保存它)使用pytest動態參數化類級別的燈具
換句話說,我正在尋找一個相當於pytest_generate_tests(metafunc),這將工作動態參數化夾具,而不是測試功能。
我已經嘗試過一次沒有成功的事情是通過pytest_generate_tests鉤子讀取請求參數並設置那些。
conftest.py:
def pytest_generate_tests(metafunc):
metafunc.parametrize("result", [
(1,0),(1,2)
])
test_thing.py:
class TestThingy:
@pytest.fixture(scope="class")
def result(self, request):
a,b=request.param
return a+b
#@pytest.mark.parametrize("result", [(0, 1), (1, 2)])
def test_one(self, result):
assert result!=2
運行這個測試會導致拋出以下錯誤(請注意,測試運行正常,當我嘗試它沒有conftest掛鉤,並與註釋行註釋掉):
@pytest.fixture(scope="class")
def result(self, request):
a,b=request.param
AttributeError: 'SubRequest' object has no attribute 'param'
我也會對任何其他替代方法感興趣,以達到相同的結果。
如果py.test團隊可以權衡,那將是非常好的。文檔在這一點上根本不明確。 –