Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模型假设策略的延迟评估_Python_Django_Python Hypothesis - Fatal编程技术网

Python 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):

我有一个Django模型。除此之外,它还有一个指向
用户的
外键

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