gpt4 book ai didi

python - 用作默认参数值时 Django factoryboy 失败

转载 作者:太空宇宙 更新时间:2023-11-04 03:15:37 26 4
gpt4 key购买 nike

我有一组工厂,我在测试阶段通过一个名为 Create 的便捷函数运行这些工厂。当我需要引用现有项目时,我将其作为参数传递,如果没有,我会使用 FactoryBoy 创建一个新项目:

def Create(project=ProjectFactory()):
# do stuff with project

我这样调用函数:

Create() # new project will be defined
Create(existing_project) # existing project will be used

但它不起作用,我有一堆错误:

E   ProgrammingError: relation "auth_user" does not exist
E LINE 1: ...user"."is_active", "auth_user"."date_joined" FROM "auth_user...
E ^

在尝试了几天不同的解决方法后,我发现这个版本有效:

def Create(project=None):
project = ProjectFactory() if not project else project
# do stuff with project

对我来说它做同样的事情,我在这里错过了什么?

最佳答案

请注意,def Create(project=ProjectFactory()): 中的默认参数在模块加载时绑定(bind),本质上是在测试运行器启动时绑定(bind)。由于测试运行器从头开始迁移测试数据库,因此无法在此时创建和保存 Project

在第二个版本中

def Create(project=None):
project = ProjectFactory() if not project else project

创建 Project 的代码位于函数内部,因此仅在函数被调用时执行 -- 迁移运行之后。

关于python - 用作默认参数值时 Django factoryboy 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36398060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com