• 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

    --未完待续

    最懒的人就是整天忙得没时间学习、反思、成长的人。
  • 相关阅读:
    [Linux] Ubuntu Server18 python3.7 虚拟环境
    [Linux] 树莓派编译python3.7.4
    [Linux] TMUX Python版本设置
    Linux 批量杀进程的命令
    arm树莓派Raspbian 下安装selenium+chrome
    树莓派Raspbian系统密码
    mac 终端查看端口命令
    selenium firefox 内存 速度优化
    [Linux] tmux 终端复用命令行工具
    通过 ssh 登录到手机 Termux
  • 原文地址:https://www.cnblogs.com/jockeyhao/p/12153349.html
Copyright © 2020-2023  润新知