我正在为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。
答案 0 :(得分:0)
setUpClass
(我相信自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。