测试非模型字段时,Pytest 和混合器不会引发错误

问题描述

我正在关注测试驱动开发,并且正在使用混合器、Pytest 和 pytest-django 处理 Django 模型。

这是对 Project 模型的测试:

class TestProject:
    def test_model_valid_fields(self,django_user_model):
        project = mixer.blend(
            'workspaces.Project',title="Road map",non_model_field="some value"
        )

        assert project.pk == 1
        assert project.title == "Road map"
        assert project.non_model_field == "some value"

Project 模型,注意 Project 模型只有 title 字段:

class Project(models.Model):
    title = models.CharField(max_length=200)

两件事:

  1. 混合器如何允许使用非模型字段?
  2. 为什么 Pytest 没有引发错误,因为 Project 模型没有 non_model_field 字段?

在这里遗漏了什么?

解决方法

您不会告诉mixer您要创建哪个对象!

尝试设置 project = mixer.blend(Project,title="Road map")