一.LLT是啥?
LLT(low level test)通常由开发人员自测,它包括单元测试(Unit Test)、集成测试(Integration Test)、模块系统测试(Module System Test)、系统集成测试(BBIT),不过一般最主要最重要的部分还是UT,即单元测试。
二.LLT要做啥?
LLT需要构造单元测试用例,使用打桩的方式,模拟函数不同的输入,用于验证是否能达到预期的输出效果。LLT是函数级的,这说明LLT的粒度是十分小的,需要测试每个函数的正确性,因此理论上LLT可以详细的覆盖代码中的每一个分支,每一行代码。
三.LLT要怎么做?
1.LLT对函数测试的思路
a.可以对函数总体异常进行检测,使用断言arrestRaise,该断言第一参数为异常类型,第二参数为要检测函数名(不带参数),之后的参数为被检测函数的参数。这样可以获得被检测函数引发的异常
b.若有返回值,则可以使用断言arrestEqual对比期望输出与实际输出,但实际上python的函数极少数才有返回值,那么可以对比函数中拥有的全局变量。看函数中间是否运行正常
c.可以总结一下函数产生了什么效果,然后可以去检测效果是否产生,如某函数的效果是在A文件下创建一个B文件,那么我们可以检测B文件是否真的创建,此时可以用断言assertTrue(b in a)之类的来检测效果
d.对单句话的作用进行检测,只适用于及其重要的语句,关键步骤。即,将LLT粒度减小到一行代码,对于这一行代码创建一个测试函数,来检测这一句话是否生效。
2.LLT的实际操作
a.因为LLT的主要功能就是UT(单元测试),所以做python的LLT最重要的当然也是Python的单元测试框架,这里推荐unittest关于python unittest的使用,请参见我的这篇博客(https://blog.csdn.net/lwgkzl/article/details/80939554)
b.由于LLT的测试粒度是函数,但是如果一些函数需要调用另一些函数,或者需要做繁杂的数据库连接操作,如果每测一个函数就要重新写数据库连接代码,这无疑是及其繁琐的,所以需要python的打桩功能,推荐python的mock框架,关于mock的使用,请参见我的这篇博客(http://python.jobbole.com/87656/)
c.由a,b两项已经搭建了一个比较小的LLT测试框架,可参考