unittest学习记录
unittest学习主要有两点,一是怎么使用unittest,二是学习其源码。这两点就好比即使不知道gcc是怎么实现的,我们也能用c语言写出软件来。哪怕我们不清楚unittest是怎么实现的,我们也可以用它来做单元测试,但是如果我们可以去学习它的源码,为什么不呢?
1、直接把unittest的用sublime编辑器打开,目录结构如下
2、断言
self.assertTrue()
self.assertFalse()
3、suite的概念
套件,把多个testcase组合成测试套件
4.unittest的使用
通过继承TestCase(),实现我们自己的测试类。
我一直有一个疑惑,就是类中的方法被调用了,那么说明它应该进行了实例化,那么实例化发生在那里呢,源码是在哪处?
from unittest import TestCase
from unittest import main
class MyTest(TestCase):
def setUp(self):
super(MyTest, self).setUp()
# prepare
def test_001(self):
# do test
a = 1
self.assertEqual(a, 1)
def tearDown(self):
pass
if __name__ == '__main__':
main()
5.unittest是怎么实现的?
下面这个代码段,是unittest用来获取测试定义类里面以test开头的可以调用的方法。
# self.testMethodPrefix = 'test'
def getTestCaseNames(self, testCaseClass):
"""Return a sorted sequence of method names found within testCaseClass
"""
def isTestMethod(attrname, testCaseClass=testCaseClass,
prefix=self.testMethodPrefix):
return attrname.startswith(prefix) and \
hasattr(getattr(testCaseClass, attrname), '__call__')
testFnNames = filter(isTestMethod, dir(testCaseClass))
if self.sortTestMethodsUsing:
testFnNames.sort(key=_CmpToKey(self.sortTestMethodsUsing))
return testFnNames