这是我对views.py的测试功能,下面将对此进行介绍:
def test_operation_page(self):
url = reverse('operation')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'abc.html')
self.assertContains(response, '<b>BOOK id having certain title:</b>')
这是我在测试视图时遇到的错误
AssertionError:在SimpleTestCase子类中不允许对“默认”的数据库查询。可以使用子类TestCase或TransactionTestCase来确保正确的测试隔离,或者将“ default”添加到home.tests.TestViews.databases中以使此失败保持沉默。
这是我的观点。py
def operation(request):
queryset=Mytable.objects.filter(title="The Diary of Virginia Woolf Volume Five: 1936-1941").values('bookid')
textset=list(Mytable.objects.order_by('-bookid').values('title'))
context={
'key1' : queryset,
'key2' : textset
}
return render(request,'abc.html',context)
这是我的urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('',v.index,name='index'),
path('abc/',v.operation,name='operation')
]
答案 0 :(得分:0)
在文档SimpleTestCase下的声明中,“如果您的测试进行任何数据库查询,请使用子类class User< ApplicationRecord
devise :session_limitable (only if user.status == "mystatus")
end
或TransactionTestCase
。”
您得到的错误是告诉您您的视图正在尝试在TestCase
的子类中执行数据库查询。您应该更改正在使用的SimpleTestCase
类-这样可以解决错误。
答案 1 :(得分:0)
就像您继承TestCase
或TransactionTestCase
或通过以下方式使用相同的SimpleTestCase
一样
class CustomClass(django.test.SimpleTestCase):
databases = '__all__'
...
较早的SimpleTestCase
依赖于allow_database_queries = True
自2.2版开始贬值的django
。
不推荐使用此属性,而推荐使用databases
。可以通过设置allow_database_queries = True
来实现databases = '__all__'
的先前行为。
https://docs.djangoproject.com/en/2.2/topics/testing/tools/#django.test.SimpleTestCase.databases