[英]pytest parameterization indirectly when using unittest framework
我同時使用 python 單元測試和 pytest 框架。 我遇到了一個案例,我有一個生成簽名 header 令牌的裝置,我試圖在本地模擬它。 所以我想創建一個夾具,我可以在測試運行時將有效負載傳遞給它。 但是,我似乎無法同時使用 pytest 和單元測試。
pytest.fixture
def gen_headers(value):
return "hey bud, you got a nice header!" + value["fake_head"]
class Tests(unittest.TestCase):
@pytest.mark.parametrize("gen_headers", [{"fake_head": "hi :)"}], indirect=True)
def test_func(self, gen_headers):
do_ya_thing = api.request("get", headers=gen_headers)
...
測試失敗TypeError: ... missing 1 required positional argument: ...
我嘗試使用參數化的 python package,但我認為它不支持在運行時(測試時)將自定義輸入傳遞給夾具,這正是我想要做的,因為在gen_headers
中返回的東西可能會改變。
您不能輕易地將參數化裝置與單元測試結合起來。 有什么理由不直接在這里使用 pytest 嗎?
僅使用 pytest,您就可以使用請求夾具輕松訪問參數。
import pytest
@pytest.fixture
def gen_headers(request):
return "hey bud, you got a nice header!" + request.param["fake_head"]
class TestWithFixtures:
@pytest.mark.parametrize(
"gen_headers",
[
{"fake_head": "hi :)"},
{"fake_head": "bye :("}
],
indirect=True
)
def test_func(self, gen_headers):
print(gen_headers)
============================= test session starts =============================
collecting ... collected 2 items
test.py::TestWithFixtures::test_func[gen_headers0]
test.py::TestWithFixtures::test_func[gen_headers1]
============================== 2 passed in 0.02s ==============================
PASSED [ 50%]hey bud, you got a nice header!hi :)
PASSED [100%]hey bud, you got a nice header!bye :(
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.