• unittest模块(单元测试)


    单元测试概念:

    软件中的最小可测试单元进行检查和验证

    unittest四大部分:
    Test fixture: 就是运行被测软件所需要的一切东西,这个“东西”不单只是数据,同时还包括对被测软件的准备,例如实例化某个被测方法所在的类,准备数据库的ConnectionString等。通常来说,有三种方法来准备Test Fixture(内联,委托,隐式);

    Test case测试用例;

    Test suite测试用例(Test case)的集合;

    Test runner执行测试用例。

    示例:

    >>> import unittest

    >>> class Test_x(unittest.TestCase):

    ...     def setUp(self):

    ...         self.seq=1

    ...     def test_a(self):

    ...         return self.seq+1

    ...     def test_b(self):

    ...         return self.seq+2

    ...

    >>> if __name__=="__main__":

    ...     unittest.main()

    执行过程:

    Test_x继承unittest.TestCase类,setUp是准备测试(Test Fixture);例子中一共有两个testcase,组成了一个testsuite;loader.TestLoader类中有一个loadTestsFromTestCase()方法是加载测试用例(TestLoader);最后通过unittest.main()运行所有测试用例。

    testsuite(测试用例集合)生成核心语句:

    testCaseNames中的每一个元素,使用testCaseClass为其构造对象,其结果是一个TestCase的对象集合。

    loadTestsFromTestCase()方法核心是下面这句:

    self.suiteClass(map(testCaseClass, testCaseNames))

     等同于:

        testcases = []

        for name in testCaeNames:  

        testcases.append(TestCase(name))  

        loaded_suite = self.suiteClass(tuple(testcases)) 

    setUpClass方法核心:

    setUpClass()在一个测试类中在所有test用例开始之前,执行一次且必须使用到Testsuite(只有在TestSuite的run方法里面才对其调用):

    如果在执行过程中想改变setUpClass定义变量值,可以把值定义成列表类型等可变类型。

    tearDownClass方法:

    tearDownClass()在一个测试类中在所有test结束之后,执行一次且必须使用到Testsuite(只有在TestSuite的run方法里面才对其调用)

    测试过程当中需要对用例进行一些特殊处理,比如标记用例失败忽略@unittest.expectedFailure,跳过执行@unittest.skip

  • 相关阅读:
    Codeforces Round #454 Div. 2 A B C (暂时)
    Codeforces Round #453 Div. 2 A B C D (暂时)
    EOJ Monthly 2017.12 A B C D
    C++调用Matlab引擎 图像读写与处理 (知识+代码篇)
    Codeforces Round #449 Div. 2 A B C (暂时)
    AtCoder Regular Contest 077 E
    hdu 6218 Bridge 线段树 set
    hdu 2243 考研路茫茫——单词情结 AC自动机 矩阵幂次求和
    php配置php-fpm启动参数及配置详解
    PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)
  • 原文地址:https://www.cnblogs.com/zhangtebie/p/11185943.html
Copyright © 2020-2023  润新知