如何检查LiveServerTestCase中的传入请求?

时间:2015-03-13 17:56:00

标签: javascript django selenium django-forms

我的用例: 我有一个使用JavaScript的自定义Django小部件,我想为它编写测试。我想构建包含窗口小部件呈现的输入的HTML,然后提交此窗体并对传入的POST请求进行一些检查。我认为应该可以使用Selenium和可选的LiveServerTestCase

但是有几个问题:

  1. Selenium不允许拦截此类请求。
  2. LiveServerTestCase在单独的线程中运行服务器,所以我无法挂钩查看代码并将断言放在那里。
  3. 如何拦截来自Selenium的请求?或者也许有其他方法可以测试这些东西?

1 个答案:

答案 0 :(得分:0)

您链接的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()

您应该遵循相同的路径,但随后发帖。

  1. 执行get并检查您要查看的元素的内容。
  2. 使用您需要的值填充输入。
  3. 执行post,并检查要查看的元素的内容。
  4. 另外,你提到了javascript。您需要使用StaticLiveServerTestCase才能获得javascript。