是否有辦法指定pytest
的pytest.mark.parametrize()
參數的可調用參數,以便僅在選擇運行測試時動態生成參數?如何使用callable作爲pytest參數ize()參數?
我有一些昂貴的操作要執行以生成參數,我只想執行它們,如果測試被選中運行。
例如,
import pytest
def my_callable():
# do expensive operations here
return [(1, 2), (3, 6)]
# I want my_callable to be called only if test_something
# has been selected to be run
@pytest.mark.parametrize("my_parm_1,my_parm_2", my_callable)
def test_something(my_parm_1, my_parm_2):
assert my_parm_1 * 2 == my_parm_2
這一切似乎都是pytest方面的一個小缺陷。也許值得考慮用pytest提交一個bug,以便延遲評估參數到裝飾測試運行的時刻(或者添加一個裝飾參數來實現這一點)... – sophros