python - 用于 HTML 字符串的 pretty-print assertEqual()

标签 python html unit-testing testing

我想在包含 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/

相关文章:

javascript - 如何验证动态生成的文本区域和复选框

javascript - 从多行表 PHP Javascript 将多条记录插入 MySQL

在同一类的另一个方法中调用 C++ GoogleMock 模拟方法

angular - 用 jest 测试 Angular 组件给出了resolveComponentResources

python - 为什么这个答案通过了 Leetcode Q41

python - 在python中获取移动宽带调制解调器的MAC地址

html - 将 <embed> volume 设置为 0 并使用 CSS 隐藏它

unit-testing - XCTAssertEqual 与 Optional(不是 Equatable)

python - 如何将 python 列表中的第 n 个条目相互添加?

python - 纯Python gui 库?