Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django测试不起作用,但视图起作用_Python_Django_Testing - Fatal编程技术网

Python Django测试不起作用,但视图起作用

Python Django测试不起作用,但视图起作用,python,django,testing,Python,Django,Testing,我正在尝试将数据插入数据库,以测试我的视图是否正常工作。 我该怎么做才能看到页面内部发生的事情 我有一个错误,当我试图断言我发送到表单的数据是否存在时 奇怪的是,当我用runserver运行我的应用程序时,一切正常,但当我在测试时,视图不工作 def测试\新建\板\创建\视图(自): url=反向(“新电路板”) response=self.client.get(url) self.assertEqual(response.status_代码,200) self.assertEqual(res

我正在尝试将数据插入数据库,以测试我的视图是否正常工作。 我该怎么做才能看到页面内部发生的事情

我有一个错误,当我试图断言我发送到表单的数据是否存在时

奇怪的是,当我用runserver运行我的应用程序时,一切正常,但当我在测试时,视图不工作


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中为应用定义的名称