【发布时间】:2014-06-17 07:19:27
【问题描述】:
我正在使用 Selenium(python 绑定,与 Django)进行自动化 Web 应用程序测试。我的页面有一个带有按钮的表单,并且该按钮有一个捕获点击的.click() 处理程序(即不会立即提交表单)。处理程序运行function2(),当function2() 完成时,它提交表单。
在我使用 Selenium 进行的测试中,我填写了表格,然后单击提交按钮。我想验证表单是否最终提交(导致 POST 请求)。表单 POST 然后使用 GET 重定向到相同的 url,所以我无法检查新的 url。我想我需要检查 POST 请求是否发生。如何检查表单提交是否成功?
或者,我可以在数据库级别检查是否创建了一些新对象,但这会导致“单元”测试不好。
【问题讨论】:
-
您的帖子是否改变了您所在网页上的任何内容?或者在另一个页面上你可以切换到?如果没有,您可能无法做到。您无法使用 webdriver 检查状态代码。也许只是使用检查正确状态代码的单元测试。
-
发布不会改变当前页面上的任何内容。帖子的结果都在服务器端(除了 post->redirect->get,它在用户看来就像刷新页面一样)。我知道 django 测试客户端可以处理状态码部分,甚至可以告诉我请求方法,但我真正要测试的是 js 执行,所以我需要 selenium。
-
@andy 我不清楚您希望通过测试检查什么。您只想测试 POST 的发生,但您不在乎服务器端发生了什么?因此,如果 POST 发生但在服务器端创建了一个带有错误数据的对象,您不关心这个吗? (从客户端来看,POST 看起来仍然是成功的。)
-
@Louis 我想分别测试这些东西 - 1) POST 数据导致在 db 中创建新对象和 2) POST 发生。想象一下我的代码中有一个错误会导致我的 function2() 运行,但之后不提交表单。我有这样的错误。所以我想测试以单击按钮开始并(可能)以 http POST 作为一个单元结束的 javascript,与服务器端处理分开
标签: python django forms selenium