2017-06-21 15 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位数的代码。

相关问题