Python Django模型假设策略的延迟评估
我有一个Django模型。除此之外,它还有一个指向Python Django模型假设策略的延迟评估,python,django,python-hypothesis,Python,Django,Python Hypothesis,我有一个Django模型。除此之外,它还有一个指向用户的外键: class MyModel(models.Model): foo = models.BooleanField() bar = models.ForeignKey(User) 我的测试中有一个方法,它可以生成一个适当形状的User-generate\u test\u User() 我想用编写一些测试来断言关于模型实例的各种属性 我的第一个实现如下所示: class MyTestCase(TestCase):
用户的外键
:
class MyModel(models.Model):
foo = models.BooleanField()
bar = models.ForeignKey(User)
我的测试中有一个方法,它可以生成一个适当形状的User
-generate\u test\u User()
我想用编写一些测试来断言关于模型实例的各种属性
我的第一个实现如下所示:
class MyTestCase(TestCase):
@hypothesis.given(models(MyModel, bar=just(generate_test_user())))
def test_my_model(self, mymodel):
pass
但是,这失败了,因为在导入时调用了generate\u test\u user
,因此尝试在Django迁移等运行之前创建模型
制定策略的好方法是什么,以便在正确的时间评估正确的事情/延迟调用/类似的评估?听起来你需要这样做,而不是在@given()
中指定它:
听起来您需要这样做,而不是在@given()
中指定它:
TL;我想要的是构建
而不是只是
根据假设。策略
:
def just(value):
"""Return a strategy which only generates value.
Note: value is not copied. Be wary of using mutable values.
"""
鉴于(为简洁起见编辑):
这就是我的原作
@hypothesis.given(models(MyModel, bar=just(generate_test_user())))
def test_my_model(self, mymodel):
pass
变成
@hypothesis.given(models(MyModel, bar=builds(generate_test_user)))
def test_my_model(self, mymodel):
pass
一切都如我所愿,在每次测试运行时,在正确的时间调用generate\u test\u user
;我想要的是构建
而不是只是
根据假设。策略
:
def just(value):
"""Return a strategy which only generates value.
Note: value is not copied. Be wary of using mutable values.
"""
鉴于(为简洁起见编辑):
这就是我的原作
@hypothesis.given(models(MyModel, bar=just(generate_test_user())))
def test_my_model(self, mymodel):
pass
变成
@hypothesis.given(models(MyModel, bar=builds(generate_test_user)))
def test_my_model(self, mymodel):
pass
所有的一切都如我所愿,在每次测试运行中,在正确的时间调用generate\u test\u user