2017-06-21 27 views
1

我正在考慮使用hypothesis進行一些測試。我喜歡它可以生成大量的數據來查找邊緣情況。但是,我希望能夠更多地調整我的一些測試。可以使用假設來生成特定類型的數據(即郵政編碼或電話號碼)嗎?

例如,我可以定義一個測試來生成integers,但我期望這個測試符合有效的郵政編碼是好的。我可以這樣做嗎?或者,也許更復雜的符合非美國郵政編碼,這些都是整數,但其他(比如加拿大)則不是?

相同類型的東西對預期符合某種類型的掩碼(即電子郵件地址)的text字段將會有用。

現在我有測試用例,裝飾這樣的:

from hypothesis import given, strategies as st 
@given(st.integers()) 

對於這種特殊情況下,我想它也符合美國郵政編碼規則。

@given(st.text()) 

對於這一個,我希望它生成類似電子郵件的格式的模式。

可以假設做這種類型的代?

回答

2

假設可以或多或少地做你喜歡的任何一代,但如果沒有內建策略,你需要自己寫一個,通常使用@composite裝飾器。 Here's an article from the site on how to do this sort of thing

對於具體的電子郵件,有some ongoing work提供了一個很好的內置實現,但它可能不會很快到達。

我不知道的東西,做郵政編碼,並做適當的看起來很難,但看什麼其他隨機生成你可能只用st.integers(501, 99950).map(lambda i: "%05d" % (i,)),它只是需要501和99950之間的整數脫身並將其格式化爲5位數的代碼。