当前位置:  开发笔记 > 编程语言 > 正文

Django get_queryset方法的单元测试失败

如何解决《Djangoget_queryset方法的单元测试失败》经验,为你挑选了0个好方法。

我正在为使用django编写的基于Web的应用程序编写单元测试用例。对于django类的单元测试,我使用django.test中提供的TestCase类。

现在,当我通过client.get()方法测试get_queryset()方法时,它将返回错误:

引发DatabaseError(“数据库不支持此查询。”)
DatabaseError:数据库不支持此查询。

这是我要测试的方法:

class IngredientAll(generics.ListAPIView):
permission_classes = (permissions.IsAuthenticated,)
model = Ingredient
serializer_class = IngredientListSerializer

def get_queryset(self):
    userCompanyId = self.request.user.get_profile().companyId
    ingredients = Ingredient.objects.filter(company = userCompanyId)
    return ingredients

这是我为同一情况编写的测试用例:

class IngredientAllTestCase(unittest.TestCase):
def setUp(self):
    self.user=User(username='jimish')
    password = 'password'
    self.user.set_password(password)
    self.user.save()

    self.client = Client()
    self.client.login(username=self.user.username, password=password)


def test_IngredientAll(self):
    url = reverse('lib:ingredient-all')
    response = self.client.get(url)
    self.assertEqual(response.status_code,status.HTTP_200_OK)

可以向您保证,URL反向转换没有错误。我已经从python shell检查了它。这是网址格式:

url(r'^allingredients$', views.IngredientAll.as_view(), name='ingredient-all'),

错误显示在

response = self.client.get(url)

有人帮助我会很棒,我将非常感谢。

这是错误的完整回溯:

$ python manage.py测试lib.tests:IngredientAllTestCase

$ python manage.py测试lib.tests:IngredientAllTestCase

Ë

错误:test_IngredientAll(lib.tests.IngredientAllTestCase)

追溯(最近一次通话):

在test_IngredientAll中的文件“ C:\ Apache2 \ htdocs \ iLab \ api \ lib \ tests.py”,第94行,所有响应= self.client.get(url)

文件“ C:\ Python27 \ lib \ site-packages \ django \ test \ client.py”,第442行,在get response = super(Client,self).get(path,data = data,** extra)中

在get return self.request(** r)中的文件“ C:\ Python27 \ lib \ site-packages \ django \ test \ client.py”,行244

get_response中的第111行的文件“ C:\ Python27 \ lib \ site-packages \ django \ core \ handlers \ base.py”

response = callback(request, *callback_args, **callback_kwargs)

文件“ C:\ Python27 \ lib \ site-packages \ djangorestframework-2.3.8-py2.7.egg \ rest_framework \ compat.py”,行127,在视图中返回self.dispatch(request,* args,** kwargs )

文件“ C:\ Python27 \ lib \ site-packages \ django \ views \ decorators \ csrf.py”,第39行,在wrapped_view中,resp = view_func(* args,** kwargs)

文件“ C:\ Python27 \ lib \ site-packages \ django \ views \ decorators \ csrf.py”,第52行,在wrapped_view中返回view_func(* args,** kwargs)

文件“ C:\ Python27 \ lib \ site-packages \ djangorestframework-2.3.8-py2.7.egg \ rest_framework \ views.py”,行399,调度响应= self.handle_exception(exc)

文件“ C:\ Python27 \ lib \ site-packages \ djangorestframework-2.3.8-py2.7.egg \ rest_framework \ views.py”,第396行,在调度响应=处理程序中(请求,* args,** kwargs)

获取返回Response(serializer.data)中的文件“ C:\ Apache2 \ htdocs \ iLab \ api \ lib \ views.py”,行431

文件505中的文件“ C:\ Python27 \ lib \ site-packages \ djangorestframework-2.3.8-py2.7.egg \ rest_framework \ serializers.py”,数据self._data = [该项的[self.to_native(item)在obj中]

_result_iter self._fill_cache()中的文件“ C:\ Python27 \ lib \ site-packages \ django \ db \ models \ query.py”,第107行

_fill_cache self._result_cache.append(self._iter.next())中的文件“ C:\ Python27 \ lib \ site-packages \ django \ db \ models \ query.py”,第774行

文件“ C:\ Python27 \ lib \ site-packages \ django \ db \ models \ query.py”,第275行,位于迭代器中,用于编译器中的行。results_iter():文件“ build \ bdist.win-amd64 \ egg \ djangotoolbox \ db \ basecompiler.py“,第225行,在results_iter self.check_query()中

在check_query中,文件“ build \ bdist.win-amd64 \ egg \ djangotoolbox \ db \ basecompiler.py”行273引发DatabaseError('数据库不支持此查询。)

DatabaseError:数据库不支持此查询。

-------------------- >>开始捕获日志<< --------------------

django.request:错误:内部服务器错误:/ allingredients

追溯(最近一次通话):

get_response response = callback(request(request,* callback_args,** callback_kwargs)中的文件“ C:\ Python27 \ lib \ site-packages \ django \ core \ handlers \ base.py”,第111行

文件“ C:\ Python27 \ lib \ site-packages \ djangorestframework-2.3.8-py2.7.egg \ rest_framework \ compat.py”,行127,在视图中返回self.dispatch(request,* args,** kwargs )

文件“ C:\ Python27 \ lib \ site-packages \ django \ views \ decorators \ csrf.py”,第39行,在wrapped_view中,resp = view_func(* args,** kwargs)

文件“ C:\ Python27 \ lib \ site-packages \ django \ views \ decorators \ csrf.py”,第52行,在wrapped_view中返回view_func(* args,** kwargs)

文件“ C:\ Python27 \ lib \ site-packages \ djangorestframework-2.3.8-py2.7.egg \ rest_framework \ views.py”,行399,调度响应= self.handle_exception(exc)

文件“ C:\ Python27 \ lib \ site-packages \ djangorestframework-2.3.8-py2.7.egg \ rest_framework \ views.py”,第396行,在调度响应=处理程序中(请求,* args,** kwargs)

获取返回Response(serializer.data)中的文件“ C:\ Apache2 \ htdocs \ iLab \ api \ lib \ views.py”,行431

文件505中的文件“ C:\ Python27 \ lib \ site-packages \ djangorestframework-2.3.8-py2.7.egg \ rest_framework \ serializers.py”,数据self._data = [该项的[self.to_native(item)在obj中]

_result_iter self._fill_cache()中的文件“ C:\ Python27 \ lib \ site-packages \ django \ db \ models \ query.py”,第107行

文件“ C:\ Python27 \ lib \ site-packanosetests lib.tests:IngredientAllTestCase --verbosity = 1正在销毁别名'default'的测试数据库...

ges \ django \ db \ models \ query.py“,第774行,在_fill_cache self._result_cache.append(self._iter.next())中

文件“ C:\ Python27 \ lib \ site-packages \ django \ db \ models \ query.py”,第275行,位于迭代器中,用于editor.results_iter()中的行:

在result_iter self.check_query()中,文件“ build \ bdist.win-amd64 \ egg \ djangotoolbox \ db \ basecompiler.py”,第225行

在check_query中,文件“ build \ bdist.win-amd64 \ egg \ djangotoolbox \ db \ basecompiler.py”,第273行

raise DatabaseError('This query is not supported by the database.')

DatabaseError:数据库不支持此查询。

--------------------- >>结束捕获日志<< ---------------------


在0.900秒内进行了1次测试

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有