タイトルはそれをすべて言います。私は何をしようとしているのかを示して質問を説明します。Djangoユニットテストでモックモデルを宣言する方法はありますか?
私は重要ではありません詳細は、Resources
で作業するためにそのclean()
方法に組み込まれたいくつかの機能を持っているResourceForm
を作成するためのDjangoのModelForm
クラスを拡張してきました。 ResourceForm
は基本的にライブラリクラスであり、ResourceForm
クラスが定義されているモデルはアプリにないため、アプリから既存のモデルを使用することはできません(例:mock.Mock(spec=SomeModel)
はオプションではありません)。
私はユニットテストResourceForm
にしようとしていますが、私はModelForm
からResourceForm
継承しているので必要ですジャンゴModel
を、模擬ための正しい方法を把握することはできません。これは私が試してみましたいくつかの取り組みの一つである(この場合は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)
をしかし、それは発生します
RuntimeError: Model class customer.tests.tests_lib_restless_ext.SampleModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
私は開いていますどのように私はこれをテストしようとしている方法でオフになっている場合の提案に。