zoukankan      html  css  js  c++  java
  • python单元测试框架unittest

    什么是单元测试?

    单元测试是负责对最小的软件设计单元(模块)进行验证。

    python语言下有很多单元测试框架,例如unittest、pytest、doctest等,其中unittest为python语言中自带的单元测试框架。

    下面给出一个比较简单的unittest单元测试脚本

     1 import unittest     # 导入unittest模块
     2 
     3 
     4 class TestCount(unittest.TestCase):     # 定义测试类子类,继承父类unittest.TestCase中所有的方法
     5 
     6     def setUp(self):        # setUp()方法用于测试案例执行之前的初始化工作
     7         print("test start")
     8 
     9     def test_add(self):     # 定义测试用例部分,必须是以test开头命名,可以定义多个测试用例的方法
    10         result_1 = input("Enter a number!
    ")
    11         result_1 = int(result_1)
    12         self.assertEqual(result_1, 113, msg="something is wrong")       # 可使用unittest.TestCase类下的各种断言方法用于对结果的判断
    13 
    14     def test_add2(self):        # 第二条测试用例
    15         result_2 = 18 * 8
    16         self.assertEqual(result_2, 144, msg="Result is wrong")
    17 
    18     def tearDown(self):     # tearDown()方法与setUp()方法相对应,用于测试用例执行之后的善后工作,为下一条case的执行留下一个干净的环境
    19         print("test end")
    20 
    21 
    22 if __name__ == "__main__":      # 该部分使用main()方法将一个单元测试模块变成可以直接运行的脚本
    23     unittest.main()

    在python标准库关于unittest的官方说明文档中,开篇就给出了比较重要的4个基本概念:

    测试用例(TestCase)

    一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。 unittest 提供一个基类: TestCase ,用于新建测试用例。

    测试套(TestSuite)

    test suite 是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。

    测试运行器(test runner)

    test runner 是一个用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,通过TextTestRunner类提供的run()方法来执行test suite或test case。

    测试脚手架(test fixture)

    test fixture 表示为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理操作,一般通过TestCase中的setUp()和tearDown()方法来实现。举个例子,这可能包含创建临时或代理的数据库、目录,再或者启动一个服务器进程。

    • unittest中常用的断言方法:

    msg:判断不成立时需要返回的字符串

    assertEqual(a, b, msg=“”)
    判断两个参数相等:first == second

    assertNotEqual(a, b, msg=“”)
    判断两个参数不相等:first != second

    assertIn(member, container, msg=“”)
    判断是字符串是否包含:member in container

    assertNotIn(self, member, container, msg=“”)
    判断是字符串是否不包含:member not in container

    assertTrue(x,msg=“”)
    判断是否为真:bool(x) is True

    assertFalse(x, msg=“”)
    判断是否为假:bool(x) is False

    assertIsNone(obj, msg=“”)
    判断是否为None:obj is None

    assertIsNotNone(obj, msg=“”)
    判断是否不为None:obj is not None

    --未完待续

    最懒的人就是整天忙得没时间学习、反思、成长的人。
  • 相关阅读:
    【osd】OSD的状态转化
    【monitor】paxos算法
    【osd】Ceph中的数据一致性
    【osd】peering基本概念
    【osd】PG的生成过程
    【osd】ceph读写流程
    【osd】peering 运行过程 举例阐述
    【osd】BACKOFF
    【vscode】快捷键
    python写文件,过滤空行,根据某一行打上标记
  • 原文地址:https://www.cnblogs.com/jockeyhao/p/12153349.html
Copyright © 2011-2022 走看看