Kin*_*Guy 15 python testing django unit-testing
我如何调试我的测试?例如,我POST以创建一个条目,并期望它验证并返回一个特定的页面.它适用于浏览器和shell,但测试是唯一失败的(具有讽刺意味!).我想将响应打印到控制台或其他东西,以便我可以读取错误或你有什么.但我只能看到我print在视图中看到的东西.
不确定是否有必要,但这里是有问题的测试代码tests.py:
resp = self.client.post('/meal/invite/',
{'summary': 'Test munch', 'when': now(), 'max_diners': '1', 'description': 'Munchies'}, follow=True)
self.assertEqual(resp.status_code, 200)
self.assertContains(resp, 'Test munch', 1)
self.assertContains(resp, 'You are hosting this meal', 1)
Run Code Online (Sandbox Code Playgroud)
最后的断言是不正确的.如果我将其更改为原始表单页面中显示"字段必需"错误的值,则会通过.我只是看不到我错过的东西.
我有一些其他测试工作,但我只是不知道如何调试这个.
怎么做?
Peh*_*eje 12
如果您使用 vscode,您可以在 root/vscode/launch.json 文件中创建一个新配置,如下所示:
{
"version": "0.2.0",
"configurations": [
{
"name": "Django RUN",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": [
"runserver",
"--noreload",
"--nothreading"
],
"django": true
},
{
"name": "Django TEST",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": [
"test",
"<your-app-name>",
],
"django": true
}
]
}
Run Code Online (Sandbox Code Playgroud)
这允许您在测试中放置断点并使用 vscode 进行调试。
dm0*_*514 10
你可以投入pdb并检查一切.
如果你正在使用nose我相信你必须运行你的测试-s
-s, --nocapture Don't capture stdout (any stdout output will be
printed immediately) [NOSE_NOCAPTURE]
Run Code Online (Sandbox Code Playgroud)
这使您无法立即看到输出.
要在pdb下运行测试:
python -m pdb manage.py test yourapp
Run Code Online (Sandbox Code Playgroud)
我同意Alasdair的印刷响应.内容(以及一般的印刷品)是一个很好的帮助.输出与正常的测试运行器输出混合在一起,一旦找到问题并修复它就应该删除,但它可以帮助您缩小问题范围.
此外,如果代码在浏览器和shell中工作但不在单元测试中工作,请记住单元测试创建一个新的(空)数据库.确保您的setUp放入测试所需的任何数据.
(更新了Patrick的建议中的代码部分,感谢Patrick)
最简单的方法是添加 print response.content在断言之前。输出可能有点压倒性,但通常足以让您发现问题。
如果这不能解决它,文档中列出了许多可以提供帮助的功能。添加一些打印语句,看看你得到了什么。这里有一些建议,但不要局限于这些,文档中有更多工具。
https://docs.djangoproject.com/en/dev/topics/testing/
首先,您需要检查页面是否确实按照您的预期进行了重定向。尝试使用redirect_chain或assertRedirects。
我怀疑您的帖子数据由于某种原因无效。您可以从响应上下文中获取表单。
form = response.context['form']
print form.is_valid()
print form.errors
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9987 次 |
| 最近记录: |