Muh*_*zad 3 django unit-testing pytest django-rest-framework pytest-django
由于django 模型中的auto_now_add,sent_at在 pytest 工厂中不起作用。需要覆盖 pytest 工厂的 sent_at
class ABC(models.Model):
x = models.ForeignKey(X, on_delete=models.CASCADE, related_name="xx")
y = models.ForeignKey(Y, on_delete=models.CASCADE, related_name="yy")
sent_at = models.DateTimeField(auto_now_add=True)
class ABCFactory(factory.django.DjangoModelFactory):
x = factory.SubFactory(XFactory)
y = factory.SubFactory(YFactory)
sent_at = timezone.now() - timezone.timedelta(seconds=40)
Run Code Online (Sandbox Code Playgroud)
也许可以查看在factory_boy github上发布的这个解决方案: https://github.com/FactoryBoy/factory_boy/issues/102
简而言之,有2种解决方案:
auto_now_add模型字段中的 并改为使用default=timezone.now. 它非常相似,只是该字段在管理中不会是只读的。但现在您可以轻松地覆盖/更新它_create方法,以便它设置字段并在最初创建实例后重新保存实例| 归档时间: |
|
| 查看次数: |
1247 次 |
| 最近记录: |