我想在html页面上进行单元测试,该页面在HttpResponse对象中作为字节字符串返回...例如“find_elements_by_tag_name”。解决方案只是xml.dom.minidom.parseString的response.content字节吗?
我找不到任何人在网上或Django手册或教程中做这个的例子,这让我想知道是不是有理由不这样做?如果这是不好的做法,有更好的方法来做到这一点,你能说出为什么和什么?
答案 0 :(得分:0)
是的,这是一种将HTML解析为DOM树的方法。如果其他人不这样做,他们可能有其他要求。
一般来说,你的想法并不差,它可能需要比其他测试方法更多的CPU时间(例如正则表达式。但如果它符合你的测试需求,那就去做吧。在测试时它很少出现问题。< / p>
答案 1 :(得分:0)
为了兴趣,这是我最终提出的:
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的信息。