第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

pytest 中的參數(shù)化測試對于不同的測試函數(shù)具有不同的標記

pytest 中的參數(shù)化測試對于不同的測試函數(shù)具有不同的標記

牛魔王的故事 2023-06-27 13:25:35
我目前正在嘗試在以下上下文中使用 pytest 的參數(shù)化功能:我有多個功能,應(yīng)該使用一組通用的測試用例進行測試。根據(jù)測試的功能,相同的測試用例應(yīng)該通過或失敗。我想出了一個愚蠢的例子來說明這一點:import pytest# Functions to testdef sum_int(a, b):    assert isinstance(a, int)    assert isinstance(b, int)    return a + bdef sum_any(a, b):    return a + b# Universal test casesTESTCASES = [    "a,b,result", [        (1, 1, 2),        ("a", "a", "aa")        ]    ]class Tests:    @pytest.mark.parametrize(*TESTCASES, ids=["int_pass", "str_fail"])    def test_sum_int(self, a, b, result):        assert sum_int(a, b) == result    @pytest.mark.parametrize(*TESTCASES, ids=["int_pass", "str_pass"])    def test_sum_any(self, a, b, result):        assert sum_any(a, b) == result不幸的是,似乎不可能只通過額外的分數(shù)(就像pytest.mark.xfail(reason=AssertionError)可以parametrize()用 ID 來完成一樣。# Does not work@pytest.mark.parametrize(*TESTCASES,                         ids=["int_pass", "str_fail"],                         marks=[None, pytest.mark.xfail(reason=AssertionError)])def test_sum_int(self, a, b, result):    assert sum_int(a, b) == result實現(xiàn)這一目標的好方法是什么?
查看完整描述

2 回答

?
阿波羅的戰(zhàn)車

TA貢獻1862條經(jīng)驗 獲得超6個贊

我不得不發(fā)現(xiàn)我的問題的答案相對簡單。該pytest.param機制允許為特定測試用例指定標記:


@pytest.mark.parametrize(

    TESTCASES[0],

    [

        pytest.param(*args, marks=marks)

        for args, marks

        in zip(TESTCASES[1], [[], [pytest.mark.xfail(reason=AssertionError)]])

    ],

    ids=["int_pass", "str_fail"],

    )

def test_sum_int(self, a, b, result):

    assert sum_int(a, b) == result


查看完整回答
反對 回復(fù) 2023-06-27
?
海綿寶寶撒

TA貢獻1809條經(jīng)驗 獲得超8個贊

如果您試圖僅標記字符串測試的總和,您可以這樣做:


# Universal test cases

TESTCASES = [

? ? "a,b,result", [

? ? ? ? (1, 1, 2),

? ? ? ? pytest.mark.xfail(("a", "a", "aa"))

? ? ? ? ]

? ? ]

查看完整回答
反對 回復(fù) 2023-06-27
  • 2 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號