码迷,mamicode.com
首页 > 编程语言 > 详细

python unittest 基本介绍

时间:2015-11-11 13:31:09      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:

1介绍下unittest的基本使用方法:

1.import unittest 
2.定义一个继承自unittest.TestCase的测试用例类 
3.定义setUp和tearDown,在每个测试用例前后做一些辅助工作。 

4.定义测试用例,名字以test开头。 

5.一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。 

6.调用unittest.main()启动测试 
7.如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。

具体例子如下:

# -*- coding: cp936 -*-
import unittest




class DefaultWidgetSizeTestCase(unittest.TestCase):
    def setUp(self):    #测试前的准备工作
        pass


    def test_testcase1(self):   #测试用例1,且必须以test开头才能被认作是一个测试用例
        pass


    def test_testcase2(self):
        pass


    def test_testcase3(self):
        pass

     def runTest(self):

        pass


    def tearDown(self):  #测试后的清除数据工作
        pass



if __name__ == "__main__":


    unittest.main()   #必须调用main启动此次测试

查看了unittest的源代码发现,这个类中有四个testcase,3个以test开头,另一个是runTest,但是结果只运行了test开头的3个testcase,是因为代码中写着如果有test开头的则运行test开头的testcase,如果没有test开头的testcase而又存在runTest,怎运行runtest这个测试用例,在这里例子中,如果把3个test开头的testcase注释掉,则显示运行了一条testcase,即runTest。

测试结果:

...
----------------------------------------------------------------------
Ran 3 tests in 0.078s


OK


2 下面是unittest模块的常用方法:

assertEqual(a, b)     a == b      

 assertNotEqual(a, b)     a != b      

 assertTrue(x)     bool(x) is True       

assertFalse(x)     bool(x) is False      

 assertIs(a, b)     a is b     2.7 
assertIsNot(a, b)     a is not b    

 2.7 assertIsNone(x)     x is None     2.7 
assertIsNotNone(x)     x is not None     2.7 

assertIn(a, b)     a in b     2.7 
assertNotIn(a, b)     a not in b     2.7 
assertIsInstance(a, b)     isinstance(a, b)     2.7 
assertNotIsInstance(a, b)     not isinstance(a, b)     2.7 

3也有其他的unittest方法,用于执行更具体的检查,如:

Method     Checks that     New in 

assertAlmostEqual(a, b)     round(a-b, 7) == 0       

assertNotAlmostEqual(a, b)     round(a-b, 7) != 0       

assertGreater(a, b)     a > b     2.7 

assertGreaterEqual(a, b)     a >= b     2.7 

assertLess(a, b)     a < b     2.7 

assertLessEqual(a, b)     a <= b     2.7 

assertRegexpMatches(s, re)     regex.search(s)     2.7 

assertNotRegexpMatches(s, re)     not regex.search(s)     2.7 

assertItemsEqual(a, b)     sorted(a) == sorted(b) and works with unhashable objs     2.7 

assertDictContainsSubset(a, b)     all the key/value pairs in exist in b     2.7  




单元测试例子:

  • import random  
  • import unittest  
  •   
  • class TestSequenceFunctions(unittest.TestCase):  
  •   
  •     def setUp(self):  
  •         self.seq = range(10)  
  •   
  •     def test_shuffle(self):  
  •         # make sure the shuffled sequence does not lose any elements  
  •         random.shuffle(self.seq)  
  •         self.seq.sort()  
  •         self.assertEqual(self.seq, range(10))  
  •   
  •         # should raise an exception for an immutable sequence  
  •         self.assertRaises(TypeError, random.shuffle, (1,2,3))  
  •   
  •     def test_choice(self):  
  •         element = random.choice(self.seq)  
  •         self.assertTrue(element in self.seq)  
  •   
  •     def test_sample(self):  
  •         with self.assertRaises(ValueError):  
  •             random.sample(self.seq, 20)  
  •         for element in random.sample(self.seq, 5):  
  •             self.assertTrue(element in self.seq)  
  •   
  • if __name__ == ‘__main__‘:  
  •     unittest.main() 
  • python unittest 基本介绍

    标签:

    原文地址:http://my.oschina.net/yusi/blog/528805

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!