Python 中的 unit test 流程

看了看Python中的单元测试流程, 写了个测试代码来看整体的测试流程

总结如下

  • 一个 test case 类应该派生自 unittest.TestCase
  • 正常的的test case的调用顺序为

  • 子类TestCase可以注册自己的清理函数(my_cleanup). 这个清理函数会在teardown之后被调用
    def setUp(self):
        super(MyTestCase, self).setUp()
        self.addCleanup(self.my_cleanup)
  • 单元测试函数名必须以"test_"开始
    def test_case_1(self):
        print("++++ test case 1")

测试的源代码:

from __future__ import print_function
import unittest

def setUpModule():
    print("setUpModule")

def tearDownModule():
    print("tearDownModule")

class MyTestCase(unittest.TestCase):

    def setUp(self):
        super(MyTestCase, self).setUp()
        self.addCleanup(self.my_cleanup)

        print()
        print("++++ setup")

    def tearDown(self):
        super(MyTestCase, self).tearDown()
        print("++++ tearDown")
        raise Exception()

    def my_cleanup(self):
        print("++++ my_cleanup")

    def test_case_1(self):
        print("++++ test case 1")

    def test_case_2(self):
        print("++++ test case 2")

    @classmethod
    def setUpClass(cls):
        print("setUpClass")

    @classmethod
    def tearDownClass(cls):
        print()
        print("tearDownClass")

这个程序的运行结果:

setUpModule
setUpClass

++++ setup
++++ test case 1
++++ tearDown
++++ my_cleanup

++++ setup
++++ test case 2
++++ tearDown
++++ my_cleanup

tearDownClass
tearDownModule
时间: 2024-10-06 00:22:52

Python 中的 unit test 流程的相关文章

Python学习(二):入门篇:python中流程控制与函数编写

python中流程控制与函数编写 Last Eidt 2014/5/2 转载请注明出处http://blog.csdn.net/jxlijunhao 一,流程控制 1)布尔逻辑 Python中利用True来表示逻辑真,False来逻辑假 not :非 and:与 or   :或 ==  :逻辑等 >>> False==True False >>> False==False True >>> not False True >>> Fal

python中if else流程判断

1.python中实现密码密文输入 #!/usr/bin/env python import getpass #调用getpass模块就能实现密码密文显示 username=input("username:") userpasswd=getpass.getpass("userpasswd:") print(username,userpasswd) 2.if 判断 (1). #!/usr/bin/env python _username = "lijinzh

9.python的布尔类型与流程控制

布尔类型其实可以算是一种特殊的数字,下面是 help() 函数得到的帮助信息: Help on class bool in module __builtin__: class bool(int) | bool(x) -> bool | | Returns True when the argument x is true, False otherwise. | The builtins True and False are the only two instances of the class b

Python 中的进程、线程、协程、同步、异步、回调

进程和线程究竟是什么东西?传统网络服务模型是如何工作的?协程和线程的关系和区别有哪些?IO过程在什么时间发生? 在刚刚结束的 PyCon2014 上海站,来自七牛云存储的 Python 高级工程师许智翔带来了关于 Python 的分享<Python中的进程.线程.协程.同步.异步.回调>. 一.上下文切换技术 简述 在进一步之前,让我们先回顾一下各种上下文切换技术. 不过首先说明一点术语.当我们说"上下文"的时候,指的是程序在执行中的一个状态.通常我们会用调用栈来表示这个状

python中的迭代、生成器等等

本人对编程语言实在是一窍不通啊...今天看了廖雪峰老师的关于迭代,迭代器,生成器,递归等等,word天,这都什么跟什么啊... 1.关于迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)(Iteration的中文意思就是:反复.重复.迭代等).而这些for循环所遍历的对象(list or tuple 等)成为可迭代对象(Iterable). 也就是说"迭代"就是一个动作或者过程,可以把list或tup

python中的生成器和迭代器

1. 迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 1.1 使用迭代器的优点 对于原生支持随机访问的数据结构(如tuple.list),迭代器和经典for循环的索引访问相比并无优势,反而丢失了索引值(可以使用内建函数enumerate()找回这个索引值).但对于无法随机访问的数据结构(比如set)而言,迭代器是唯一的访问元素的方式. 另外,迭代器的一大优点是不要求事

理解Python中的装饰器

文章先由stackoverflow上面的一个问题引起吧,如果使用如下的代码: @makebold @makeitalic def say(): return "Hello" 打印出如下的输出: <b><i>Hello<i></b> 你会怎么做?最后给出的答案是: def makebold(fn): def wrapped(): return "<b>" + fn() + "</b>&q

python中的yield

例如这个函数 def fab(max): n, a, b = 0, 0, 1 while n < max: yield b # print b a, b = b, a + b n = n + 1 简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab

Python中strip方法的妙用

[开胃小菜] 当提到python中strip方法,想必凡接触过python的同行都知道它主要用来切除空格.有以下两种方法来实现. 方法一:用内置函数 #<python> if __name__ == '__main__': str = ' Hello world ' print '[%s]' %str.strip() #</python> 方法二:调用string模块中方法 #<python> import string if __name__ == '__main__