资讯专栏INFORMATION COLUMN

python学习笔记- 单元测试,UnitTest

k00baa / 1255人阅读

摘要:所谓的单元测试,就是对一个模块,一个函数,或则是一个类进行正确性检测的一类测试工作。当然,单元测试也会让代码量大大增加。编写单元测试代码需要引入的包。再所有单元测试开始前运行函数在所有单元测试运行后运行。

所谓的单元测试,就是对一个模块,一个函数,或则是一个类进行正确性检测的一类测试工作。

以测试驱动的开发方式叫做测试驱动开发(Test Drived Development). 这种开发模式不仅仅是测试,而是分解需求,保证代码质量的一种手段。

单元测试不仅仅在测试的时候保障函数、模块或者类的功能符合我们的需求。同时,也有利于我们在未来修改类或者函数的时候,只需要再跑一遍单元测试就可以确保我们的修改对功能不会产生影响。

当然,单元测试也会让代码量大大增加。

编写单元测试代码需要引入Python的unittest包。
我们可以新建一个单元测试类,但是这个类需要继承unitest.TestCase类。
测试类中的测试方法必须是test开头的,否则不会被执行。
那么这样我们就可以使用unitest.TestCase中的方法了。
常用的方法有:

assertEqual(self, first, second) # 判断是否是预期值
assertTrue(bool) # 判断是否为真
assertRaises(exception) #判断是非抛出特定异常。

我们来举一个例子:

我们先定义一个类自定义类,然后对它进行单元测试。

Dict.py

class Dict(dict):
    def __init__(self, **kwargs):
        super(Dict, self).__init__(**kwargs)

    def __getattr__(self, item):
        try:
            return self[item]
        except KeyError:
            raise AttributeError

    def __setattr__(self, key, value):
        self[key] = value
import unittest
from Dict import Dict


class DictTest(unittest.TestCase):
    def test_init(self):
        d = Dict(a=100, b=200)
        self.assertEqual(d.a, 100)
        self.assertEqual(d.b, 200)
        self.assertTrue(isinstance(d, dict))

    def test_key(self):
        d = Dict()
        d["key"] = "300"
        self.assertEqual(d["key"], "300")

    def test_attar(self):
        d = Dict()
        d.attar = "attar"
        self.assertTrue("attar" in d)
        self.assertEqual(d.attar, "attar")

    def test_keyError(self):
        d = Dict()
        with self.assertRaises(KeyError):
            value = d["NotExisted"]

    def test_attarError(self):
        d = Dict()
        with self.assertRaises(AttributeError):
            value = d.not_existed

if __name__ == "__main__":
    unittest.main()

因为我们定义了一个dict的子类,所以我们要对它的key、value进行测试;同时它是一个类,所以我们也需要对它的attribute进行测试。

我们定义的unittest.TestCase子类,需要写上两句:

if __name__ == "__main__":
    unittest.main()

我们才能像普通python文件一样执行它。

另外,我们也可以用以下方式执行多个test

python -m unittest DictTest
setUp 和 tearDown函数。

setUp和tearDown函数是两个特殊的函数。
setUp再所有单元测试开始前运行; tearDown函数在所有单元测试运行后运行。
这两个函数的应用场景主要有:
例如在需要连接数据库的情况下,可以在setUp函数中开始连接,在tearDown函数中关闭连接。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38323.html

相关文章

  • Python学习之路10-测试代码

    摘要:也就是说,你可以将上述代码中的看做单元测试,而将看做测试用例。在测试类中的每一个测试方法都必须以开头,否则将不会被认定是一个单元测试。 《Python编程:从入门到实践》笔记。本章主要学习如何使用Python标准库中的unittest模块对代码进行简单的测试。 1. 前言 作为初学者,并非必须为你尝试的所有项目编写测试;但参与工作量较大的项目时,你应对自己编写的函数和类的重要行为进行测...

    huangjinnan 评论0 收藏0
  • Python学习之路10-测试代码

    摘要:也就是说,你可以将上述代码中的看做单元测试,而将看做测试用例。在测试类中的每一个测试方法都必须以开头,否则将不会被认定是一个单元测试。 《Python编程:从入门到实践》笔记。本章主要学习如何使用Python标准库中的unittest模块对代码进行简单的测试。 1. 前言 作为初学者,并非必须为你尝试的所有项目编写测试;但参与工作量较大的项目时,你应对自己编写的函数和类的重要行为进行测...

    Developer 评论0 收藏0
  • 通过demo学习OpenStack开发所需的基础知识 -- 单元测试

    摘要:本文将进入单元测试的部分,这也是基础知识中最后一个大块。本文将重点讲述和中的单元测试的生态环境。另外,在中指定要运行的单元测试用例的完整语法是。中使用模块管理单元测试用例。每个项目的单元测试代码结构可 本文将进入单元测试的部分,这也是基础知识中最后一个大块。本文将重点讲述Python和OpenStack中的单元测试的生态环境。 单元测试的重要性 github上有个人画了一些不同语言的学...

    douzifly 评论0 收藏0
  • 【自动化测试Python - unittest单元测试框架

    摘要:通过数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。二框架用搭建自动化测试框架,需要组织用例以及测试执行,大部分推荐的是。 一、测试模型 下面这部分来自于某书籍资料,拿过来,按需参考一下: 测试模型(1)线性测试1、概念:通过录制或编写对应应用程序的操作步骤产生的线性脚本。单纯的来模拟用户完整的操作场景。(操作,重复操作,数据)都混合在一起。2、优点:每个脚本相对独立,...

    noONE 评论0 收藏0
  • 说说Python中的单元测试

    摘要:必然的,他们会抛弃标准库中的,使用或者发明自己心仪的单元测试框架。究其原因,一些人会说时间写代码都不够,哪还有空写单元测试。最后我的个人观点,单元测试其实还有一个非常重要的作用,就是替代函数文档注释。希望从今天起,你的代码也都有单元测试。 单元测试是每种编程语言必学的课题,是保护开发者的强力护盾,每个程序员都在时间允许的情况下尽可能多的写单元测试,今天我们不讨论其必要性,只抛砖引玉聊一...

    chengjianhua 评论0 收藏0

发表评论

0条评论

k00baa

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<