我正在尝试为我的应用准备一些简单的测试。我有一个模型如下:
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()需要1个位置参数但是2个被赋予
我做错了什么?
答案 0 :(得分:2)
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')
答案 1 :(得分:1)
您需要提供带create()
的字段名称,如下所示:
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')
您还应该确认上一个self.assertEqual
,因为您班级中没有nowa_kategoria
变量,所以它总是会失败;你可能想要
self.assertEqual(tworzenie_nowej_kategoria.nazwa, self.nazwa)
请注意,我删除了硬编码名称,并将变量名称更改为要返回的对象名称。