Python AttributeError:';类别';对象没有属性';名称';-设置类
我正在Django应用程序中为模型编写测试,但无法让它们运行。我已经尽了我所能去解决和寻找,但找不到解决办法 运行测试时收到的错误是Python AttributeError:';类别';对象没有属性';名称';-设置类,python,django,testing,model,Python,Django,Testing,Model,我正在Django应用程序中为模型编写测试,但无法让它们运行。我已经尽了我所能去解决和寻找,但找不到解决办法 运行测试时收到的错误是AttributeError:“UserModelTest”对象没有属性“firstUser”,这表明我没有正确定义firstUser 下面是相关的代码位 测试.py from django.test import TestCase from .models import ContactForm from datetime import datetime, time
AttributeError:“UserModelTest”对象没有属性“firstUser”
,这表明我没有正确定义firstUser
下面是相关的代码位
测试.py
from django.test import TestCase
from .models import ContactForm
from datetime import datetime, timedelta
class UserModelTest(TestCase):
@classmethod
def setUpClass(cls):
cls.firstUser = ContactForm(
email="first@user.com",
name="first",
timestamp=datetime.today() + timedelta(days=2)
)
cls.firstUser.save()
def test_contactform_str_returns_email(self):
self.assertEqual("first@user.com", str(self.firstUser))
from django.db import models
import datetime
class ContactForm(models.Model):
name = models.CharField(max_length=150)
email = models.EmailField(max_length=250)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.email
class Meta:
ordering = ['-timestamp']
型号.py
from django.test import TestCase
from .models import ContactForm
from datetime import datetime, timedelta
class UserModelTest(TestCase):
@classmethod
def setUpClass(cls):
cls.firstUser = ContactForm(
email="first@user.com",
name="first",
timestamp=datetime.today() + timedelta(days=2)
)
cls.firstUser.save()
def test_contactform_str_returns_email(self):
self.assertEqual("first@user.com", str(self.firstUser))
from django.db import models
import datetime
class ContactForm(models.Model):
name = models.CharField(max_length=150)
email = models.EmailField(max_length=250)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.email
class Meta:
ordering = ['-timestamp']
我使用的是Python版本3.5和Django版本1.10。
setUpClass
已经不推荐使用Django(我相信是从1.8开始)。为了现在就设置这个类,我需要使用setUpTestData
。剩下的代码仍然有效<然后,代码>设置测试数据只在类中所有测试方法之前运行一次(而不是在每个测试之前运行一次)
i、 e.代码应为:
class UserModelTest(TestCase):
@classmethod
def setUpTestData(cls):
cls.firstUser = ContactForm(
email="first@user.com",
name="first",
timestamp=datetime.today() + timedelta(days=2)
)
cls.firstUser.save()
def test_contactform_str_returns_email(self):
self.assertEqual("first@user.com", str(self.firstUser))
可以找到有关setUpTestData的更多信息。为什么将SetUpClass大写?请修复缩进。另外,您的问题是您将用户分配给类本身,而不是类的任何实例。(1)显示回溯(2)问题正文中的错误消息与问题标题中的错误消息不同已解决:对于Django 1.10,我应该使用
setUpTestData
,而不是setUpClass
setUpClass
在我使用的Django的早期版本中使用。我不知道这已经被否决了。Django文档涵盖了setUpTestData
。谢谢你的回复。