Django で最初の単体テストを作成しようとしています。スタッフ登録フォームです。フォームの Staff モデルには、UserProfile (AUTH_PROFILE_MODULE) との OneToOne 関係があります。UserProfile は、django.contrib.auth.models.User と OneToOne の関係にあります。
https://github.com/dnerdy/factory_boyを使用して、staff モデルのテスト モデル インスタンスを作成しています。アイデアは、テスト モデル インスタンスを簡単に作成できるように、StaffFactory を使用することです。バインドされたフォームを作成するには、データ dict を渡す必要があります。フォームをテストするときに、 django.forms.models.model_to_dictを使用してモデル インスタンスをデータ dict に変換すると便利だと思いました。
さて、私の問題は次のとおりです。model_to_dict が Staff モデルの外部キーをトラバースしません (Staff->UserProfile->User)。これは、ユーザーの電子メールなどの必須フィールドがまだフォーム データ内にないため、フォームが無効のままであることを意味します。
現在、私の StaffRegistrationFormTest は次のようになります。
class StaffRegistrationFormTest(unittest.TestCase):
def test_success(self):
staff1 = StaffFactory()
form = StaffRegistrationForm(model_to_dict(staff1))
# print jsonpickle.encode(model_to_dict(staff1))
self.assertTrue(form.is_valid(), form.errors)
モデル インスタンスを再利用して外部キーをシリアル化する dict を渡す方法はありますか?