导航

单元测试笔记

Posted on 2017-04-10 21:46  圆润的馒头君  阅读(130)  评论(0编辑  收藏  举报

  1.测试代码的可读性和非测试代码是同样重要的,它记录了真实代码如何工作和应该如何使用,因此如果测试很容易阅读,使用者对于真实代码的行为会有更好的理解。

  2.好的测试代码应当做到:对使用者隐去不重要的细节,以便最重要的细节会更突出。具体做法,可以构建多个辅助函数,使得测试代码精炼成一行代码:“对于这样的输入/情形,期望有这样的行为/输出”,这除了让代码紧凑而又易读,让测试的表述保持很短还会让增加测试变得很简单。

  3.使用更高级的assert,如python中unittest模块中的assertEqual()方法,该方法在测试失败的时候会给出具体的错误消息,这会对我们有助于改正bug。但是这样也许还不够好,于是我们可以人工打造更好的测试函数,得到更好更完整的错误信息,比如使得得到的错误信息可以按格式打印出:

  input:xxx;

  expected output:xxx;

  actual output:xxx;

  4.精心设计测试输入,基本原则是应当选择一组最简单的输入,使得它能够完整地使用被测代码。在选取测试输入的时候,也不要将所有输入写在一个语句里,最好将输入按类别分成几条语句,比如一句专门用来测试边界条件、一句专门测试缓冲区溢出等。

  5.测试函数的命名也应当讲究规则,最好使用Test_functionName这种格式,名字应具有较好的描述性,不要害怕名字太长或者太繁琐,因为整个代码库不会调用这个函数,因此要避免使用长函数名的理由在这里并不适用。好的函数名相当于一条注释,并且当测试失败的时候,如果输出了该函数的名字,也会有利于更正bug。