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
posted @ 2022-03-06 10:40  叶常落  阅读(38)  评论(0编辑  收藏  举报