标题说明了一切。我将通过展示我正在尝试做的事来说明问题。
我已经扩展了Django的ModelForm
类来创建一个ResourceForm
,它在clean()
方法中内置了一些用于处理Resources
的功能,其中的细节并不重要。 ResourceForm
基本上是一个库类,应用程序中没有定义ResourceForm
类的模型,因此我不能只使用应用程序中的现有模型(例如{{1} }}不是一个选项。)
我正在尝试单元测试mock.Mock(spec=SomeModel)
,但我无法找出模拟Django ResourceForm
的正确方法,这是Model
继承自ResourceForm
后所必需的}。这是我尝试过的几项努力之一(在这种情况下不使用ModelForm
,但它用于说明正在尝试的内容):
mock
但是提出了:
class ResourceFormTestCase(TestCase):
class SampleModel(Model):
sample_field = CharField()
class SampleResourceForm(ResourceForm):
class Meta():
model = SampleModel
fields = ['sample_field']
def test_unsupported_field_raise_validation_error(self):
print('Test validation error is raised when unsupported field is provided')
form_data = {'sample_field': 'FooBar', 'unsupported_field': 'Baz'}
form = self.SampleResourceForm(data=form_data)
如果我试图对此进行测试,我会接受建议。
答案 0 :(得分:0)
最简单的方法是使用Django附带的user model。
如果这是不可接受的,我已经成功修补了Django管道,使其关闭并在没有数据库连接的情况下运行单元测试。查看django_mock_queries
project,看看是否有任何帮助。