Python AttributeError:“类”对象没有属性“名称”-SetUpClass
Posted
技术标签:
【中文标题】Python AttributeError:“类”对象没有属性“名称”-SetUpClass【英文标题】:Python AttributeError: 'Class' object has no attribute 'name' - SetUpClass 【发布时间】:2017-05-30 15:48:09 【问题描述】:我正在为 Django 应用程序中的模型编写测试,但无法让它们运行。我已经尝试了所有我能想到的来解决和搜索,但找不到解决方案。
我在运行测试时收到的错误是AttributeError: 'UserModelTest' object has no attribute 'firstUser'
,这表明我没有正确定义 firstUser。
这里是相关的代码。
tests.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))
models.py
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? 请修正你的缩进。 另外你的问题是你将用户分配给类本身,而不是类的任何实例。 (1) 在问题正文中显示回溯 (2) 错误消息与问题标题不同 已解决:对于 Django 1.10,我应该使用setUpTestData
而不是 setUpClass
。 setUpClass
用在我一直在使用的以前版本的 Django 中。我没有意识到这已被弃用。 Django 文档涵盖了 setUpTestData
here.。感谢您的回复。
【参考方案1】:
setUpClass
已被 Django 弃用(我相信从 1.8 开始)。为了现在设置课程,我需要使用setUpTestData
。其余代码仍然有效。然后setUpTestData
在类中的所有测试方法之前只运行一次(而不是在每次测试之前运行一次)。
即代码应该是:
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 的信息可以在here找到。
【讨论】:
以上是关于Python AttributeError:“类”对象没有属性“名称”-SetUpClass的主要内容,如果未能解决你的问题,请参考以下文章
泡菜模块出错。 AttributeError:类没有属性“__new__”
Python multiprocessing.Pool:AttributeError
python sklearn pipiline fit:“AttributeError:未找到下限”
AttributeError : 类实例没有 __call__ 方法
[Bug]Python3.x AttributeError: libtest.so: undefined symbol: fact