django表单提交的单元测试

时间:2012-03-06 22:56:08

标签: django forms unit-testing

通过针对已知良好或已知错误的字典实例化表单对象,可以轻松地测试表单清理。可以通过采用相同的dicts并使用测试客户端来测试相关的视图逻辑。

但是,我们仍然留下了实际HTML表单元素的基本问题。如果我使用了错误的方法怎么办?或者我在行动中有拼写错误?或者我忘记了CSRF_Token?如何编写实际测试用户可能遇到的行为的单元测试?

我真的需要使用机械化吗?

或者是人们使用.get(url)解析表单元素并查看响应的html内容?有更清洁的方法吗?

2 个答案:

答案 0 :(得分:1)

这不仅与Django HTML测试有关,而且与您需要测试HTML行为的任何其他应用程序有关。

您可以使用requests等库来使用不同的方法(GET / POST /等)从浏览器角度测试表单。

要进行更多用户互动测试,您可以使用Selenium,但我个人更喜欢Splinter。在splinter中,您实例化了一个名为browser的东西,您可以将其用作真正的浏览器。然后在浏览器中,您可以填充文本框,按下按钮等,然后测试行为。

以下是分段网站的代码段:

 from splinter.browser import Browser 
 browser = Browser() 
 # Visit URL 
 url = "http://www.google.com" 
 browser.visit(url) 
 browser.fill('q', "#cobrateam") 
 # Find and click the 'search' button 
 button = browser.find_by_css(".lsb") 
 # Interact with elements 
 button.click() 
 if browser.is_text_present("did not match any documents"): 
     print "nobody likes us =(" 
 else: 
     print "we're popular =)" 

在那里浏览器将打开,将导航到谷歌,填写q字段,单击搜索按钮,然后测试搜索结果。正如您所看到的,该库非常易于使用,您可以使用它进行非常复杂的测试。

答案 1 :(得分:0)

这可以使用Django 1.4中添加的LiveServerTestCase来处理。