ManyToMany関係のモデルunittestを作成しようとしています。 目的は、テーブルの成分に保存されている正しいカテゴリがあるかどうかをチェックすることです。私はこの奇妙なアサート取得最後から二番目の行のself.asserEqual(first_.categories.all(), [category_one])
ためTestCaseのself.assertEqualが類似の文字列と一致しません
class IngredientModelTest(TestCase):
def test_db_saves_ingredient_with_category(self):
category_one = IngredientsCategory.objects.create(name='Food')
first_Ingredient = Ingredient.objects.create(name='Apple')
first_Ingredient.categories.add(category_one)
category_two = IngredientsCategory.objects.create(name='Medicine')
second_Ingredient = Ingredient.objects.create(name='Antibiotics')
second_Ingredient.categories.add(category_two)
first_ = Ingredient.objects.first()
self.assertEqual('Apple', first_.name)
self.assertEqual(first_.categories.all(), [category_one])
self.assertEqual(first_, first_Ingredient)
:
AssertionError: [<IngredientsCategory: Food>] != [<IngredientsCategory: Food>]
を私は他の多くの異なる方法を試してみましたが、それのどれも働きました。どのように私はfirst_.categories.all()
の情報を他の何かと比較するためにどのように情報を得ることができますか?
それはおそらく種類のマッチングされていないためです。 all()はquerysetを返し、それをリストと比較しています。あなたはそれをチェックしましたか? – Heval
そこに結果が1つだけあることをテストしたい場合は 'self.assertEqual(first_.categories.get()、category_one)'を試してください。 – Ben