这是我对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 以确保正确的测试隔离,或将“默认”添加到 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')
]
这就像您继承
TestCase
或 TransactionTestCase
或通过以下方式使用相同的 SimpleTestCase
class CustomClass(django.test.SimpleTestCase):
databases = '__all__'
...
早期
SimpleTestCase
依赖于 allow_database_queries = True
,自 django
版本 2.2 起已贬值。
此属性已弃用,取而代之的是
databases
。之前的allow_database_queries = True
行为可以通过设置databases = '__all__'
来实现。
https://docs.djangoproject.com/en/2.2/topics/testing/tools/#django.test.SimpleTestCase.databases
正如 SimpleTestCase 下的文档中所述,“如果您的测试进行任何数据库查询,请使用子类
TransactionTestCase
或 TestCase
。”
您收到的错误告诉您,您的视图正在尝试在
SimpleTestCase
的子类中执行数据库查询。您应该更改您正在使用的 TestCase
类 - 这应该可以解决错误。
class HomepageTests(SimpleTestCase):
上述子类(SimpleTestCase)随父类(TestCase)变化
class HomepageTests(TestCase):
使用它 在此输入图片描述