python 单元测试 unittest

单元测试能够帮助咱们准确迅速地定位出现问题的模块和单元。css

单元测试的对象是函数,必须有输出结果(哪怕是异常输出),以便单元测试模块可以捕获返回值,而且与预期值进行比较,从而得出测试经过与否函数

单元测试的加载能够经过unittest.main()来启动单元测试的测试模块。单元测试

而testsuit里存放的就是单元测试的用例,下面分别列出了2种方法的使用。测试

  • setUp():             每一个测试函数运行前运行
  • tearDown():        每一个测试函数运行完后执行
  • setUpClass():      必须使用@classmethod 装饰器,全部test运行前运行一次
  • tearDownClass(): 必须使用@classmethod装饰器,全部test运行完后运行一次

:引入模块   import unittest ui

例1:测试函数

def sum(x, y):
    return x + y

def sub(x, y):
    return x - y

单元测试模块spa

class mytest(unittest.TestCase):   #全部执行测试的类都继承TestCase类 #初始化工做
    def setUp(self):
        pass
    #清退工做
    def tearDown(self):
        pass
    #具体的测试用例,必定要以test开头
    def testsum_1(self):
        self.assertEqual(sum(1, 2), 3, "test sum fail")

    def testsum_2(self):
        self.assertEqual(sum(1, 2), 2, "test sum fail")

    def testsub(self):
        self.assertEqual(sub(2, 1), 1, "test sub fail")

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

测试结果code

..F
======================================================================
FAIL: testsum_2 (__main__.mytest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/task/��Ԫ����/test1.py", line 18, in testsum_2
    self.assertEqual(sum(1, 2), 2, "test sum fail")
AssertionError: test sum fail

----------------------------------------------------------------------
Ran 3 tests in 0.003s

FAILED (failures=1)

:F表示fail, F前的表示测试经过,有E的话表示程序自身异常对象

 

例2:测试类

class myclass:
    def __init__(self):
        pass

    def sum(self, x, y):
        return x + y

    def sub(self, x, y):
        return x - y

测试代码blog

class mytest(unittest.TestCase):
    def setUp(self):
        self.tclass = myclass()

    def tearDown(self):
        pass

    def testsum_1(self):
        self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail")

    def testsum_2(self):
        self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail")

    def testsub(self):
        self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail")

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

结果继承

..F
======================================================================
FAIL: testsum_2 (__main__.mytest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "E:/task/��Ԫ����/test2.py", line 24, in testsum_2
    self.assertEqual(self.tclass.sum(1, 2), 5, "test sum fail")
AssertionError: test sum fail

----------------------------------------------------------------------
Ran 3 tests in 0.001s

FAILED (failures=1)

 

例3:构造测试集

被测代码

class myclass:
    def __init__(self):
        pass

    def sum(self, x, y):
        return x + y

    def sub(self, x, y):
        return x - y

测试代码

class mytest(unittest.TestCase):
    def setUp(self):
        self.tclass = myclass()

    def tearDown(self):
        pass

    def testsum_1(self):
        self.assertEqual(self.tclass.sum(1, 2), 3, "test sum fail")

    def testsum_2(self):
        self.assertEqual(self.tclass.sum(1, 2), 5, "test sum fail")

    def testsub(self):
        self.assertEqual(self.tclass.sub(2, 1), 1, "test sub fail")

def suite():
    suite = unittest.TestSuite()
    suite.addTest(mytest("testsum_1"))
    suite.addTest(mytest("testsum_2"))
    suite.addTest(mytest("testsub"))
    return suite

if __name__ == "__main__":
    unittest.main(defaultTest = "suite")
相关文章
相关标签/搜索