我想在包含 html 的 python 单元测试中比较两个字符串。
是否有一种方法可以以人类友好(类似差异)的版本输出结果?
最佳答案
一个简单的方法是从 HTML 中去除空格并将其拆分为一个列表。 Python 2.7's unittest (或向后移植的 unittest2 )然后给出列表之间人类可读的差异。
import re
def split_html(html):
return re.split(r'\s*\n\s*', html.strip())
def test_render_html():
expected = ['<div>', '...', '</div>']
got = split_html(render_html())
self.assertEqual(expected, got)
如果我正在为工作代码编写测试,我通常首先设置 expected = []
,在 assert 之前插入一个 self.maxDiff = None
并让测试失败一次。然后可以从测试输出中复制粘贴预期列表。
您可能需要根据 HTML 的外观调整去除空格的方式。
关于python - 用于 HTML 字符串的 pretty-print assertEqual(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8006909/