Python Django测试不起作用,但视图起作用
我正在尝试将数据插入数据库,以测试我的视图是否正常工作。 我该怎么做才能看到页面内部发生的事情 我有一个错误,当我试图断言我发送到表单的数据是否存在时 奇怪的是,当我用runserver运行我的应用程序时,一切正常,但当我在测试时,视图不工作Python Django测试不起作用,但视图起作用,python,django,testing,Python,Django,Testing,我正在尝试将数据插入数据库,以测试我的视图是否正常工作。 我该怎么做才能看到页面内部发生的事情 我有一个错误,当我试图断言我发送到表单的数据是否存在时 奇怪的是,当我用runserver运行我的应用程序时,一切正常,但当我在测试时,视图不工作 def测试\新建\板\创建\视图(自): url=反向(“新电路板”) response=self.client.get(url) self.assertEqual(response.status_代码,200) self.assertEqual(res
def测试\新建\板\创建\视图(自):
url=反向(“新电路板”)
response=self.client.get(url)
self.assertEqual(response.status_代码,200)
self.assertEqual(response.resolver\u match.func,new\u board\u creation\u view)
self.assertTemplateUsed(响应“new_board.html”)
url=反向(“新电路板”)
表格={'board_name':'board_di_prova…',}
response=self.client.post(url,{'form':form})
self.assertTrue(response.status\u代码,302)
self.assertEqual(Board.object.count(),4)
response=reverse('board\u view',args=(board.object.last().id.))
self.assertTrue(响应,200)
views.py
def新建板创建视图(请求):
标题='AGGIUNGI董事会'
表单=BoardCreationForm()
如果request.method==“POST”:
表单=BoardCreationForm(request.POST或None)
如果form.is_有效():
form=form.save(commit=False)
form.save()
nb=Board\u id\u user(Board\u id=form.id,user\u id=request.user.id)
印刷品(nb)
注意:保存()
返回重定向(“/dashboard/”)
其他:
表单=BoardCreationForm()
返回呈现(请求'new_board.html',{'form':form,'title':title})
其他:
表单=BoardCreationForm()
返回呈现(请求'new_board.html',{'form':form,'title':title})
我预计会有5个对象,因为存在4个,但插入失败,然后,为了使测试通过,我断言4…您使用的是decorator
@pytest.mark.django_db
?
我建议您在测试中设置decorator,这样它就可以访问数据库。使用
self.client.force_login(User.objects.get_or_create(username='testuser')[0])
用于检查状态代码,请执行以下操作:-
self.assertEqual(response.status_code, some-status-code)
在某些地方,您使用了assertTrue
而不是assertEqual
你喜欢提交表格吗-
form = {'board_name': 'board_di_prova.....'}
response = self.client.post(url, form)
不,我没有用这个装饰器。我想我可以访问数据库,因为在设置中我可以创建新对象…他没有使用
pytest
你说的“测试不工作”是什么意思?当我使用runserver时,一切都很好。在这个视图中,我使用表单插入数据。这个保存正确。当测试不起作用时,我的意思是我调用我的视图来做一些事情(例如,使用表单创建一个对象并将其插入数据库)。如果我使用runserver执行此操作,它将正常工作。当我在测试中这样做,给出被操纵的数据,当我断言时,测试失败…发布您的测试function@AnaghGoswamicode addedTry-url=reverse('app\u name:new\u board')
其中app\u name
是您在url.py中为应用定义的名称