; ;

unittest运行时指定运行顺序

背景:在unittest中运行单元测试,是没有顺序的,如果要指定运行顺序有两种方式

方法1:在运行方法后,加上数字test_0 、test_1 这样也会指定顺序

方法2:使用不同的字母表示,因为在单元测试框架中会对比每个运行方法名的ascii码,ascii码越大执行越靠后

 

案例:

测试方法

# coding=utf-8
class Calc(object):

    def add(self, x, y, *d):
        # 加法计算
        result = x + y
        for i in d:
            print(i)
            result += i
        return result

    def sub(self, x, y, *d):
        # 减法计算
        result = x - y
        for i in d:
            result -= i
        return result

    @classmethod
    def mul(cls, x, y, *d):
        # 乘法计算
        result = x * y
        for i in d:
            result *= i
        return result

    @staticmethod
    def div(x, y, *d):
        # 除法计算
        if y != 0:
            result = x / y
        else:
            raise  ZeroDivisionError
            return -1
        for i in d:
            if i != 0:
                result /= i
            else:
                raise  ZeroDivisionError
                return -1
        return result
		
if __name__=="__main__":
    c=Calc()
    print (c.add(1,2,3,4))

  

运行单元测试方法

import unittest
from Calc import Calc

class MyTest(unittest.TestCase):

    @classmethod
    def setUpClass(self):
        print (u"单元测试前,创建Calc类的实例")
        self.c = Calc()

    def test_3div(self):
        print ("run div()")
        self.assertEqual(Calc.div(8, 2, 4), 1, 'test div fail')

    # 具体的测试用例,一定要以test开头,执行顺序按照字母顺序开头
    def test_0add(self):
        print ("run add()")
        self.assertEqual(self.c.add(1, 2, 12), 15, 'test add fail')

    def test_1sub(self):
        print ("run sub()")
        self.assertEqual(self.c.sub(2, 1, 3), -2, 'test sub fail')

    def test_2mul(self):
        print ("run mul()")
        self.assertEqual(Calc.mul(2, 3, 5), 30, 'test mul fail')

    def test_runb(self):
        print("run b")

    def test_runa(self):
        print ("run a")

if __name__ == '__main__':
    unittest.main()# 启动单元测试

  执行结果

运行的数字排序、在相同的方法名时,对比不同字母的ascii码,a是97 b是98

 

posted @ 2020-03-15 11:30  做梦的人-  阅读(1089)  评论(0编辑  收藏  举报