gpt4 book ai didi

python - 运行 Django 测试时出现类型错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:55 24 4
gpt4 key购买 nike

我是 Django 或 python 的新手,但我目前正在使用这两种语言的项目中工作。现在我正在努力让我的测试发挥作用。我大约 3 个月前编写了这些简单的测试,我 100% 确定它们当时有效。另外,当我运行服务器并手动尝试不同的搜索时,我得到了预期的结果,所以我知道 View 至少是正确的(我知道它可怕且缓慢,我将努力解决这个问题)。我已经搜索过这个错误,但我发现的唯一相关的事情是 Ubuntu 是我的问题,但我在 Ubuntu 和 Windows 7 上都尝试过。我不知道从那时到现在发生了什么,但他们给了我以下错误:

编辑:我不知道为什么我的所有缩进都被忽略:|哦,好吧,经过一些建议,我改变了一些东西,现在我遇到了这样的失败:

enrique@enrique-XPS-L521X:~/Documents/Reeduq$ 
python manage.py test Search
Creating test database for alias 'default'...
FF
======================================================================
FAIL: test_private_courses_search (Search.tests.SearchTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/enrique/Documents/Reeduq/Search/tests.py", line 18, in test_private_courses_search
self.assertEqual(response.context['found_entries'],[])
AssertionError: [] != []
======================================================================
FAIL: test_public_course_search (Search.tests.SearchTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/enrique/Documents/Reeduq/Search/tests.py", line 29, in test_public_course_search
self.assertEqual(response.context['found_entries'],['<Course: test>'])
AssertionError: [<Course: test>] != ['<Course: test>']
----------------------------------------------------------------------
Ran 2 tests in 0.018s

FAILED (failures=2)
Destroying test database for alias 'default'...

我读到这意味着我没有 __unicode__函数或类似的东西,但我的类(class)模型和用户模型各有一个,所以我不知道该怎么做

这是测试代码:

from django.test import TestCase
from django.shortcuts import render, get_object_or_404, redirect, render_to_response, redirect
from django.core.urlresolvers import reverse
from Search.views import search
from Course.models import *
from Reeduq_Home.models import *
class SearchTests(TestCase):
def test_private_courses_search(self):
"""
a search should not return private courses
"""
new_user=EndUser.objects.create(username="test", first_name="test", last_name="test", email="t@t.com", password="test", account_type="E")
Course.objects.create(name="test", instructor=new_user, description="test", tags="test", start_date="2014-3-9", end_date="2014-3-10", public=False)
response=self.client.get(reverse('Search:search', args=("test",)))
self.assertEqual(response.status_code, 200)
self.assertQuerysetEqual(response.context['found_entries'],[])

def test_public_course_search(self):
"""
a search should return public courses
"""
new_user=EndUser.objects.create(username="test", first_name="test", last_name="test", email="t@t.com", password="test", account_type="E")
Course.objects.create(name="test", instructor=new_user, description="test", tags="test, wat, wait", start_date="2014-3-9", end_date="2014-3-10", public=True)
response=self.client.get(reverse('Search:search', args=("wat",)))
self.assertEqual(response.status_code, 200)
self.assertQuerysetEqual(response.context['found_entries'],['<Course: test>'])

这是查看代码:

def search(request, query):
query=query.replace('_', ' ')
found_entries = []
objects = Course.objects.all()
for p in objects:
a=[x.strip() for x in p.tags.split(',')]
for i in a:
if i == query:
if p.public:
found_entries.append(p.id)
results = Course.objects.all().filter(pk__in=found_entries)

return render_to_response('search.html',
{ 'query': query, 'found_entries': results,},)

感谢您的帮助。

最佳答案

不确定您从哪里获得 unicode 注释。response.context['found_entries'] 正在幕后执行 response.context.__get__item('found_entries'),但 response.context 为 None 。正如@AlexShkop 指出的那样,听起来您的响应不是您所期望的,可能是因为您实际上得到了 302 重定向(或 401/403)。您可以尝试@alecxe的建议,或使用内置的client.login功能(创建虚拟用户后)

关于python - 运行 Django 测试时出现类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23955280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com