簡體   English   中英

pytest 使用單元測試框架時間接參數化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM