python unittest 快排

代码

# -*-coding:utf-8 -*-

#步骤1) 导入unittest模块
import unittest
# 导入被测模块
import random

#步骤2)申明测试类,继承unittest.TestCase类的
class quicksort(unittest.TestCase):

    # 整个测试类的 所有方法 共有的“前置动作”,无论有多少个测试方法,只执行一次“前置动作”
    @classmethod
    def setUpClass(cls):
        print("这是整个测试类的 setUpClass方法")

    #每个测试方法的 前置动作方法
    def setUp(self):
        print("某一个测试用例 实例",id(self),"执行前的 前置动作")

    def tearDown(self):
        print("某一个测试用例 实例",id(self),"后置动作\n")

    @classmethod
    def tearDownClass(cls):
        print("这是整个测试类的 traeDown 方法")

    #定义 各种“测试方法”当做一条测试用例来理解,方法的名字必须以test开头
    def test_1(self):
        #如果断言不相等,本条方法会报断言异常
        exp_res = []
        act_tes = qsort([])
        self.assertEqual(act_tes,exp_res,"期望结果不等于实际结果")

    def test_2(self):
        exp_res = [1]
        act_tes = qsort([1])
        self.assertEqual(act_tes,exp_res)

    def test_3(self):
        exp_res = [1,2]
        act_tes = qsort([2,1])
        self.assertEqual(act_tes,exp_res)

    def test_4(self):
        exp_res = [1,2,3]
        act_tes = qsort([2,1,3])
        self.assertEqual(act_tes,exp_res)

    def test_5(self):
        exp_res = list(range(1,100,1))
        act_tes = qsort(list(range(99,0,-1)))
        self.assertEqual(act_tes,exp_res)


def qsort(list):
        left,pivotList,right = [],[],[]
        if(len(list) <= 1):
            return list
        else:
            pivot = list[0]
            for i in list:
                if i < pivot:
                    left.append(i)
                elif i >pivot:
                    right.append(i)
                else:
                    pivotList.append(i)
            left = qsort(left)
            right = qsort(right)
            return left + pivotList + right

#以上的 测试类定义好之后,通过“python-unittest”run执行
suite = unittest.TestSuite()

#如果希望通过“python run”直接执行,需要一下代码
if __name__ == "__main__":
    suite = unittest.TestSuite()
    unittest.main(argv=["ignored","-v"],exit=False)

输出

test_1 (__main__.quicksort) ... ok
test_2 (__main__.quicksort) ... ok
test_3 (__main__.quicksort) ... ok
test_4 (__main__.quicksort) ... ok
test_5 (__main__.quicksort) ... 
这是整个测试类的 setUpClass方法
某一个测试用例 实例 139625233181424 执行前的 前置动作
某一个测试用例 实例 139625233181424 后置动作

某一个测试用例 实例 139625233181472 执行前的 前置动作
某一个测试用例 实例 139625233181472 后置动作

某一个测试用例 实例 139625233181136 执行前的 前置动作
某一个测试用例 实例 139625233181136 后置动作

某一个测试用例 实例 139625233181184 执行前的 前置动作
某一个测试用例 实例 139625233181184 后置动作

某一个测试用例 实例 139625233181568 执行前的 前置动作
某一个测试用例 实例 139625233181568 后置动作

这是整个测试类的 traeDown 方法
ok

----------------------------------------------------------------------
Ran 5 tests in 0.013s

OK