[英]Python Hypothesis - building strategy once for many tests?
我有一個復合,昂貴的構建,但廉價的測試策略。 我必須這樣做:
@given(expensive_strategy())
def test_all(x):
assert...
assert...
...
構建示例需要大約4秒鍾,運行斷言的時間可以忽略不計。
最佳實踐要求將這些測試分開。
我不清楚如何結合假設策略和例如。 TestCase.setUp或pytest會話范圍的燈具。 兩者都裝飾夾具並用x = expensive_strategy(); @given(x)
調用x = expensive_strategy(); @given(x)
x = expensive_strategy(); @given(x)
沒有幫助。
一種選擇是僅將策略用於生成,並忽略測試用例縮減,示例數據庫等。這將使得通過測試套件更快,並且失敗的測試套件更加混亂。 像下面這樣的東西應該工作:
class MyTest(TestCase):
@classmethod # or however this is done in your test runner
def setUpClass(cls):
strategy = expensive_strategy()
cls.examples = [strategy.example() for _ in range(1000)]
def test_all(self):
for x in self.examples:
assert invariant(x)
另一種選擇是破壞假設的內部結構,以便每個測試用例接收相同的字節流,並對構建策略的任何緩慢進行緩存,盡管這肯定會違反“最佳實踐”。
就個人而言,當他們導致像慢速測試套件這樣荒謬的結果時,我不會遵循“最佳實踐”,並且可能通過調用輔助方法(如assert_a_particular_kind_of_assertion(x)
在單個測試方法中進行所有斷言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.