【发布时间】:2014-12-07 16:59:39
【问题描述】:
我正在尝试为我的第一个 Django 应用程序编写测试,但当我浏览视图时,我似乎无法测试对数据库所做的更改。这是我的一个测试示例。
def test_vote(self):
self.set_up()
idea = Idea.objects.get(title="Hello people")
c = Client()
c.login(email="xxxxx@case.edu", password="baxter")
r = c.post(reverse("ideas:up_vote", kwargs={'pk':idea.pk}), follow=True)
self.assertEqual(r.status_code, 200)
self.assertEqual(idea.votes, 1)
该视图假设对一个想法对象进行投票,这是一个简单的视图。
def like_view(request, **kwargs):
idea = Idea.objects.get(pk = kwargs['pk'])
idea.votes += 1
idea.save()
return HttpResponseRedirect(reverse('ideas:list'))
我正在使用 SQLite3 数据库。
if DEBUG:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'django',
'USER': env('RDS_USERNAME'),
'PASSWORD': env('RDS_PASSWORD'),
'HOST': env('RDS_HOST'),
'PORT': '5432',
}
}
DEBUG = True 也是。每次我运行测试时,它都没有说 idea.votes = 0 而不是 1 这是我想要得到的。我不确定我是否只是要测试这一切都是错误的还是什么。任何帮助都会非常感谢。
【问题讨论】: