Ich versuche, einen Modell-Unittest für eine ManyToMany-Beziehung zu erstellen. Ziel ist es zu prüfen, ob in der Tabelle Inhaltsstoff die richtige Kategorie gespeichert ist.TestCase self.assertEqual stimmt nicht mit einer ähnlichen Zeichenfolge überein
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)
für self.asserEqual(first_.categories.all(), [category_one])
in der vorletzten Reihe bekomme ich diese seltsame assert:
AssertionError: [<IngredientsCategory: Food>] != [<IngredientsCategory: Food>]
ich viele andere verschiedene Arten versucht, aber nichts davon funktionierte. Will jemand annehmen, wie ich die Information von first_.categories.all()
bekommen kann, um es mit etwas anderem zu vergleichen?
Es ist sehr wahrscheinlich, weil der Typen passen nicht. all() gibt queryset zurück und vergleicht es mit einer Liste. Hast du es überprüft? – Heval
Versuchen Sie 'self.assertEqual (first_.categories.get(), category_one)', wenn Sie testen möchten, dass dort nur ein Ergebnis vorhanden ist. – Ben