我正在尝试为我的应用准备一些简单的测试。我有一个模型如下:
class Kategoria(models.Model):
nazwa = models.CharField('Nazwa Kategorii', max_length=30)
class Meta:
verbose_name = "Kategoria"
verbose_name_plural = "Kategorie"
def __str__(self):
return self.nazwa
在 tests.py 中:
import unittest
from blog.models import Kategoria
class KategoriaTestCase(unittest.TestCase):
def setUp(self):
self.nazwa = 'Nowa_kategoria'
def test_tworzenie_obiektu(self):
tworzenie_nowej_kategoria=Kategoria.objects.create(self.nazwa)
self.assertTrue(tworzenie_nowej_kategoria)
self.assertEqual(nowa_kategoria.nazwa,'Nowa_kategoria')
最终测试失败是因为:
TypeError: create() takes 1 positional argument but 2 were given
我做错了什么?
请您参考如下方法:
create接受关键字参数。
在您的test_tworzenie_obiektu 方法中更改
tworzenie_nowej_kategoria = Kategoria.objects.create(self.nazwa)
^^^^
到
tworzenie_nowej_kategoria = Kategoria.objects.create(nazwa=self.nazwa)
所以你的方法应该是
def test_tworzenie_obiektu(self):
tworzenie_nowej_kategoria = Kategoria.objects.create(nazwa=self.nazwa)
self.assertTrue(tworzenie_nowej_kategoria)
self.assertEqual(nowa_kategoria.nazwa,'Nowa_kategoria')
