【问题标题】:How to check incoming requests in LiveServerTestCase?如何检查 LiveServerTestCase 中的传入请求?
【发布时间】:2015-03-13 17:55:59
【问题描述】:
我的用例:
我有一个使用 JavaScript 的自定义 Django 小部件,我想为它编写一个测试。我想用包含小部件呈现的输入的表单构建 HTML,然后提交此表单并对传入的 POST 请求进行一些检查。我认为 Selenium 和可选的 LiveServerTestCase 应该是可能的。
但是有几个问题:
- Selenium 不允许拦截此类请求。
- LiveServerTestCase 在单独的线程中运行服务器,因此我无法挂钩查看代码并将断言放在那里。
如何拦截来自 Selenium 的请求?或者也许还有其他方法可以测试这些东西?
【问题讨论】:
标签:
javascript
django
selenium
django-forms
【解决方案1】:
您链接的 Django 文档中的示例是关键。在 test_login 方法中,您会看到它执行 GET 请求,然后检查表单中存在的所有内容。
def test_login(self):
self.selenium.get('%s%s' % (self.live_server_url, '/login/'))
username_input = self.selenium.find_element_by_name("username")
username_input.send_keys('myuser')
password_input = self.selenium.find_element_by_name("password")
password_input.send_keys('secret')
self.selenium.find_element_by_xpath('//input[@value="Log in"]').click()
您应该遵循相同的路径,然后发帖。
- 发送
get 并检查您想要查看的元素的内容。
- 使用您需要的值填充输入。
- 发送
post,并检查您想查看的元素的内容。
另外,你提到了 javascript。您需要使用 StaticLiveServerTestCase 才能获得要提供的 javascript。