Skip to main content
 首页 » 编程设计

python之Django 测试出错

2024年08月25日23zhengyun_ustc

我正在尝试为我的应用准备一些简单的测试。我有一个模型如下:

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')