2015-03-13 16 views
0

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

但有几个问题:

  1. 硒不允许拦截这样的请求。
  2. LiveServerTestCase在单独的线程中运行服务器,所以我无法挂钩到视图代码并将断言置于那里。

如何拦截来自Selenium的请求?或者也许有其他方法来测试这样的事情?

回答

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,并检查您想要查看的元素的内容。

另外,你提到的JavaScript。您需要使用StaticLiveServerTestCase才能获得要投放的javascript。

相关问题