擅长:python、mysql、java
<p>经过一番研究,我找到了自己的解决方案,我有自己的测试代码如下</p>
<pre><code>def red(text):
print('\x1b[31m{}\x1b[0m'.format(text))
def assertEquals(a, b):
res = a == b
if type(res) is bool:
if not res:
red('"{}" is not "{}"'.format(a, b))
return
else:
if not res.all():
red('"{}" is not "{}"'.format(a, b))
return
print('Assert okay.')
</code></pre>
<p>它的作用是</p>
<ul>
<li>检查<code>a</code>是否等于<code>b</code>。</li>
<li>如果他们是不同的,它显示在红色的论点。</li>
<li>如果它们是一样的,它会说“好的”。</li>
<li>如果比较的结果是一个数组,它将检查<code>all()</code>是否为真。</li>
</ul>
<p>我把这个功能放在笔记本上,然后做了这样的测试</p>
<pre><code>def add(a, b):
return a + b
assertEquals(add(1, 2), 3)
assertEquals(add(1, 2), 2)
assertEquals([add(1, 2), add(2, 2)], [3, 4])
---
Assert okay.
"3" is not "2" # This is shown in red.
Assert okay.
</code></pre>
<p>这种方法的优点是</p>
<ul>
<li>我可以一个单元一个单元地测试,只要改变一个函数就可以看到结果。</li>
<li>如果使用doctest,我不需要添加额外的代码,比如<code>doctest.testmod(verbose=True)</code>。</li>
<li>错误消息很简单。</li>
<li>我可以自定义我的测试(断言)代码。</li>
</ul>