我需要帮助来实现我的 Django 应用程序的测试。 这是我的序列化器中的一段代码,我想测试它:
try:
app_config = django_apps.get_app_config(BcConfig.name)
app_model = django_apps.get_model(app_label=app_config.name,
model_name=type_model_name)
recording = app_model.objects.create(**recording)
except LookupError:
recording = None
如 Django docs 中所述,如果不存在此类应用程序或模型,则会引发 LookupError。
如何以编程方式模拟LookupError?
我尝试使用 ContentType 删除列出的模型,但 django_apps.get_model() 仍然有效。 我尝试使用 SchemaEditor 删除模型,但在 SQLite 中测试时无法正常工作。
我仍然找不到如何以编程方式删除模型或禁用 Django 应用程序。我很感激你的帮助。谢谢你。
我尝试使用
删除列出的模型,但ContentType
仍然有效。我尝试使用
django_apps.get_model()
删除模型,但在 SQLite 中测试时无法正常工作。SchemaEditor
它不查看数据库。
django_apps
字典仅查看开始运行服务器时注册的模型。所以这些模型在数据库中并没有对应的表。
如果你想测试这个,你可以只传递无意义的值,例如:
type_model_name = 'my_non_existing_model_name'
try:
app_config = django_apps.get_app_config(BcConfig.name)
app_model = django_apps.get_model(
app_label=app_config.name, model_name=type_model_name
)
recording = app_model.objects.create(**recording)
except LookupError:
recording = None
但是话虽这么说,测试 Django 的功能通常没有多大意义:正确测试这些功能是 Django 开发人员的工作,而不是为 Django 构建应用程序的人的工作。他们的工作是测试他们在 Django 之上构建的功能。