我无法使用doctest
来处理包含多行的结果,并且可能在开头包含空行。这可能是由缩进和解析问题引起的。我找到了一些解决方案:
doctest
结果与文件内容之间的比较。doctest
的读者对所需结果的了解很少。unittest
代替doctest
。有什么想法吗?
>>> data_lists=[ {"Average execution" : [1, 2, 3, 2, 3]},
... {"Top execution" : [3, 4, 5, 7, 8, 11, 6]},
... {"Current execution" : [1, 2, 1, 2, 1, 5]} ]
>>> c=Chart(data_lists,
... ("Large<br>rooster", "Rsync rooster", "Pool<br>Chicken", "Disease"),
... width=700, height=300)
>>> print c.html.strip()
<div id="placeholder3" style="width:700px;height:300px"></div>
<script id="source" language="javascript" type="text/javascript">
$(function () {
var d0 = [[0, 1], [4, 2], [8, 3], [12, 2], [16, 3]];
var d1 = [[1, 3], [5, 4], [9, 5], [13, 7], [17, 8], [21, 11], [25, 6]];
var d2 = [[2, 1], [6, 2], [10, 1], [14, 2], [18, 1], [22, 5]];
$.plot($("#placeholder3"), [
{ label: "Average execution", data: d0, bars: { show: true } },
{ label: "Top execution", data: d1, bars: { show: true } },
{ label: "Current execution", data: d2, bars: { show: true } }
],
{
xaxis: { ticks: [[1.5, "Large<br>rooster"], [5.5, "Rsync<br>rooster"], [9.5, "Pool<br>Chicken"], [13.5, "Disease"]] }
}
);
});
</script>
**********************************************************************
File "HTML.py", line 28, in __main__.Chart.__init__
Failed example:
print c.html.strip()
Expected:
<div id="placeholder3" style="width:700px;height:300px"></div>
Got:
<div id="placeholder3" style="width:700px;height:300px"></div>
<BLANKLINE>
<script id="source" language="javascript" type="text/javascript">
$(function () {
<BLANKLINE>
var d0 = [[0, 1], [4, 2], [8, 3], [12, 2], [16, 3]];
var d1 = [[1, 3], [5, 4], [9, 5], [13, 7], [17, 8], [21, 11], [25, 6]];
var d2 = [[2, 1], [6, 2], [10, 1], [14, 2], [18, 1], [22, 5]];
<BLANKLINE>
$.plot($("#placeholder3"), [
<BLANKLINE>
{ label: "Average execution", data: d0, bars: { show: true } },
{ label: "Top execution", data: d1, bars: { show: true } },
{ label: "Current execution", data: d2, bars: { show: true } }
<BLANKLINE>
],
{
xaxis: { ticks: [[1.5, "Large<br>rooster"], [5.5, "Rsync rooster"], [9.5, "Pool<br>Chicken"], [13.5, "Disease"]] }
}
);
});
</script>
**********************************************************************
1 items had failures:
1 of 3 in __main__.Chart.
__init__
***Test Failed*** 1 failures.
答案 0 :(得分:14)
将<BLANKLINE>
放入预期输出中,就像错误消息中显示的一样。然后测试应该工作得很好。预期的输入终止于第一个空白行,这就是你必须特别标记它的原因:
>>> data_lists=[ {"Average execution" : [1, 2, 3, 2, 3]},
... {"Top execution" : [3, 4, 5, 7, 8, 11, 6]},
... {"Current execution" : [1, 2, 1, 2, 1, 5]} ]
>>> c=Chart(data_lists,
... ("Large<br>rooster", "Rsync rooster", "Pool<br>Chicken", "Disease"),
... width=700, height=300)
>>> print c.html.strip()
<div id="placeholder3" style="width:700px;height:300px"></div>
<BLANKLINE>
<script id="source" language="javascript" type="text/javascript">
$(function () {
<BLANKLINE>
var d0 = [[0, 1], [4, 2], [8, 3], [12, 2], [16, 3]];
var d1 = [[1, 3], [5, 4], [9, 5], [13, 7], [17, 8], [21, 11], [25, 6]];
var d2 = [[2, 1], [6, 2], [10, 1], [14, 2], [18, 1], [22, 5]];
<BLANKLINE>
$.plot($("#placeholder3"), [
<BLANKLINE>
{ label: "Average execution", data: d0, bars: { show: true } },
{ label: "Top execution", data: d1, bars: { show: true } },
{ label: "Current execution", data: d2, bars: { show: true } }
<BLANKLINE>
],
{
xaxis: { ticks: [[1.5, "Large<br>rooster"], [5.5, "Rsync<br>rooster"], [9.5, "Pool<br>Chicken"], [13.5, "Disease"]] }
}
);
});
</script>
请参阅解释此问题的doctest文档:http://docs.python.org/library/doctest.html#how-are-docstring-examples-recognized
答案 1 :(得分:2)
使用<BLANKLINE>
表示输出中的空白行,就像失败输出显示;-)
答案 2 :(得分:0)
除了按照其他答案中的建议使用 <BLANKLINE>
之外,此选项也很有用:
>>> print c.html.strip() # doctest: +NORMALIZE_WHITESPACE
特别是如果预期的输出包含 \r
(回车)字符,在这种情况下,如果没有设置 <BLANKLINE>
,NORMALIZE_WHITESPACE
将不匹配。