zoukankan      html  css  js  c++  java
  • unittest

    unittest

    简介

    unittest是python自带的单元测试框架

    重要概念

    1)test fixture

    用于初始化和清理测试数据及环境

    2)test case

    测试用例,是测试的最小单元,一般用来检查一组输入的相应是否符合预期,

    3)test suite

    测试套件,是测试用例或测试套件的组合,一般用来把需要一起执行的测试用例组合到一起

    4)test runner

    用于运行测试用例并返回结果

    主要作用

    (1)提供用例组织代码与执行

     当有大量测试用例时,要考虑其扩展性与维护性,考虑用例的规范与组织,使测试更加规范和简单

    (2)提供丰富的比较方法

    (3)提供丰富的日志

    案例

    来看一个例子

    cal.py

    class Calculator:
        def __init__(self, a, b):
            self.a = a
            self.b = b
    
        def add(self):
            return self.a + self.b
    
        def sub(self):
            return self.a - self.b

    test.py

    import unittest
    from cal import Calculator
    
    class TestCal(unittest.TestCase):
        def setUp(self):
            print('Test begin...')
            self.cal = Calculator(2, 3)
    
        def tearDown(self):
            print('Test end...')
    
        def test_add(self):
            res = self.cal.add()
            self.assertEqual(res, 5)
    
        def test_sub(self):
            res = self.cal.sub()
            self.assertEqual(res, -1)
    
    if __name__ == '__main__':
        #构造测试集
        suite = unittest.TestSuite()
        suite.addTest(TestCal('test_add'))
        suite.addTest(TestCal('test_sub'))
    
        runner = unittest.TextTestRunner()
        runner.run(suite)

    说明:setUp方法在一个测试用例执行前执行,一般用来初始化变量,生成测试数据,打开浏览器等操作

    tearDown方法在一个测试用例执行完成后执行,一般用来清除测试数据,关闭文件,关闭浏览器等操作

    unittest要求测试方法必须以'test'开头,如test_add, test_sub

    unittest.TestSuite()中的addTest()方法向测试套件中添加测试用例

    unittest.TextTestRunner()类中的run方法用来运行测试套件中的测试用例。

    如果想默认运行当前测试文件下的所有测试用例,直接可以用unittest.main()方法,main方法查找测试用例有两个规则:

    (1)测试类必须继承unittest.TestCase

    (2)测试用例的方法必须以‘test’开头,如test_add

  • 相关阅读:
    23种设计模式之单例模式
    6大设计原则之里氏替换原则
    6大设计原则之依赖倒置原则
    6大设计原则之接口隔离原则
    6大设计原则之迪米特法则
    Java日志第14天 2020.7.19
    Java日志第15天 2020.7.20
    Java日志第13天 2020.7.18
    Python 语音识别字幕生成器
    python list,tuple,str有序问题
  • 原文地址:https://www.cnblogs.com/marton/p/10993324.html
Copyright © 2011-2022 走看看