Django 从 HttpResponse 获取一个 DOM 对象
Django get a DOM object from an HttpResponse
我想在 html 页面上进行单元测试,该页面作为 HttpResponse 对象中的字节字符串返回...例如"find_elements_by_tag_name"。解决方案只是 xml.dom.minidom.parseString response.content 的字节吗?
我无法在网上或 Django 手册或教程中找到任何人这样做的例子,这让我想知道是否有理由不这样做?如果这是不好的做法并且有更好的方法来做到这一点,请您说出原因和内容吗?
是的,这是一种将 HTML 解析为 DOM 树的方法。如果其他人不这样做,他们可能会有其他要求。
总的来说,你的想法还不错,可能比其他测试方法(例如正则表达式)需要更多CPU时间。但如果它符合你的测试需求,就去做吧。性能很少测试时出现问题。
为了兴趣,我最后想出了这个:
def test_that_all_inputs_have_name_attr( self ):
response = home_page( HttpRequest() )
from xml.dom.minidom import parseString
page_as_doc = parseString( response.content )
inputs = page_as_doc.getElementsByTagName( 'input' )
for input_el in inputs:
attr_map = input_el.attributes
fail_msg = ''
for i in range( attr_map.length ):
attr = attr_map.item( i )
fail_msg += "\nname '%s' value '%s'" % ( attr.name, attr.value )
if not fail_msg:
fail_msg = "none!"
self.assertTrue( input_el.hasAttribute( "name" ), "\nINPUT attributes: %s" % fail_msg )
...虽然我的新手理解这不是 assertTrue 中的出色测试,但如果它在一个 INPUT 标记上失败,则会导致方法结束...而您想要有关所有失败的 INPUT 的信息。
我想在 html 页面上进行单元测试,该页面作为 HttpResponse 对象中的字节字符串返回...例如"find_elements_by_tag_name"。解决方案只是 xml.dom.minidom.parseString response.content 的字节吗?
我无法在网上或 Django 手册或教程中找到任何人这样做的例子,这让我想知道是否有理由不这样做?如果这是不好的做法并且有更好的方法来做到这一点,请您说出原因和内容吗?
是的,这是一种将 HTML 解析为 DOM 树的方法。如果其他人不这样做,他们可能会有其他要求。
总的来说,你的想法还不错,可能比其他测试方法(例如正则表达式)需要更多CPU时间。但如果它符合你的测试需求,就去做吧。性能很少测试时出现问题。
为了兴趣,我最后想出了这个:
def test_that_all_inputs_have_name_attr( self ):
response = home_page( HttpRequest() )
from xml.dom.minidom import parseString
page_as_doc = parseString( response.content )
inputs = page_as_doc.getElementsByTagName( 'input' )
for input_el in inputs:
attr_map = input_el.attributes
fail_msg = ''
for i in range( attr_map.length ):
attr = attr_map.item( i )
fail_msg += "\nname '%s' value '%s'" % ( attr.name, attr.value )
if not fail_msg:
fail_msg = "none!"
self.assertTrue( input_el.hasAttribute( "name" ), "\nINPUT attributes: %s" % fail_msg )
...虽然我的新手理解这不是 assertTrue 中的出色测试,但如果它在一个 INPUT 标记上失败,则会导致方法结束...而您想要有关所有失败的 INPUT 的信息。