したがって、「開発者」と「慈善団体」という選択肢が制限されたモデルがあります。実際のフォームのラジオボタンの値をそれら以外の値に変更すると、Django はエラー メッセージを返します。しかし、テストでは、見かけの値を受け入れます。要するに、テストは失敗するべきではありませんが、失敗します。または、Django が整合性エラーか何かを発生させる必要があります。
実際には、プロファイルの外部キー フィールドをテストする際に別の問題が発生しますが、それはおそらく別の質問のために保存するのが最善です。
モデル コード スニペット:
# models.py
user_type = models.CharField(max_length=30, choices={
('Developer', 'Developer'),
('Charity', 'Charity'),
}, blank=False, null=False)
ただし、テストで次のことを行うと、エラー メッセージは表示されません。
# tests.py
def test_no_user_type(self):
my_values = self.DEFAULT_VALUES
my_values[self.USER_TYPE] = 'something'
# this row creates and saves the user and the profile.
user, profile = self.save_user(my_values)
# I thought this bit would be irrelevant at this point because
# there should be an error message
test_correct = (profile.user_type != 'something')
self.assertEqual(test_correct, True)
def save_user(self, values):
user = User.objects.create()
user.username = values[self.USERNAME]
user.email = values[self.EMAIL]
user.set_password(values[self.PASSWORD])
user.save()
profile = user.get_profile()
...
profile.user_type = values[self.USER_TYPE]
...
profile.save()
return user, profile
# constants from the top
PASSWORD = 1
EMAIL = 2
USER_TYPE = 3
...
FIELD_LIST = ['username', 'password', 'email', 'user_type']
...
DEFAULT_VALUES = ['test_username', 'test_password', 'test_email@test.com', 'Developer']
...