【发布时间】:2018-07-10 18:35:13
【问题描述】:
我想为assertEqual 不匹配提供更多信息性消息,为此我使用difflib.Differ。但是,当文件很大时,它会返回太多信息。
我如何实现像 diffs windowing 这样只显示几行上下文的东西?
@@ -155,6 +155,8 @@ except (ImportError,) as e:
raise
+tst
+
class KeepTextFilter(object):
def __init__(self, regexes = [], f_notify=None):
这是我的测试代码:
def get_data():
left, right = [],[]
for num in range(0,10):
lmark = rmark = " "
if not (num % 5):
lmark, rmark = "L", "R"
left.append("%02d%s" % (num, lmark))
right.append("%02d%s" % (num,rmark))
return left, right
from difflib import Differ
differ = Differ()
left, right = get_data()
print(left)
print(right)
output = "\n".join(differ.compare(left, right))
print(output)
这就是输出的样子(给定更大的列表,它会输出所有内容)
['00L', '01 ', '02 ', '03 ', '04 ', '05L', '06 ', '07 ', '08 ', '09 ']
['00R', '01 ', '02 ', '03 ', '04 ', '05R', '06 ', '07 ', '08 ', '09 ']
- 00L
+ 00R
01
02
03
04
- 05L
+ 05R
06
07
08
09
我怎样才能拥有一个1 的窗口。即
- 00L
+ 00R
01
04
- 05L
+ 05R
06
我正在考虑用deque(maxlen=1) 破解一些东西,但我想我会问 - 这似乎是一个明显的要求。我查看了 Differ() 和 compare 签名的构造函数,但都没有这个选项。
【问题讨论】:
标签: python unit-testing compare