2017-08-30 91 views
1

我剛將一個pytest測試套件從quickcheck遷移到hypothesis。這工作得很好(並立即發現了一些隱藏的邊緣案例錯誤),但我看到的一個主要區別與兩個物業經理之間的測試隔離有關。pytest-假設運行之間的測試隔離

quickcheck似乎只是用不同的參數值多次運行測試函數,每次運行我的函數範圍的燈具。這也導致pytest的輸出中有更多的點。

hypothesis然而,似乎多次運行測試函數的主體,這意味着例如單個運行之間沒有事務回滾。這意味着當我的測試向DB中插入某些內容時,我無法可靠地斷言多個數據庫條目,因爲上一次運行的所有條目都仍然存在。

我在這裏錯過了一些明顯的東西,或者是這種預期的行爲?如果是這樣,是否有一種方法可以獲得運行假設的數量作爲變量在測試中使用?

回答

0

恐怕你有點卡住了,目前還沒有任何解決這個問題的好方法。

假設需要工作的方式(這是pytest-quickcheck的很多改進的來源)並不符合pytest關於測試執行的假設。問題是mostly on the pytest side - 目前的pytest夾具系統有一些非常出色的假設,關於如何運行一個測試不能很好地控制測試執行的情況,以及上次我試圖解決這個問題時,我最終沉沒了在放棄之前進行一週的工作,基本上說要麼是pytest方面需要改變的東西,要麼是如果它會變得更好的話,那麼就是someone needs to fund this work

+0

我明白了。感謝您花時間回答。我正在努力解決這個問題,在我的斷言中考慮到了這一點。事實上,它也有一些優點。 :-) 順便說一句,有沒有辦法讓測試中使用的運行次數假設已經完成了? 再次感謝! –