1.首先定义几个被测试函数:
#coding=utf-8 def add(a,b): return a+b def minus(a,b): return a-b def multi(a,b): return a*b def divide(a,b): return float(a)/b
2.定义测试类:
#coding=utf-8 import unittest from world import * class TestWorldFunc(unittest.TestCase): def test_add(self): print 'test_add' self.assertEqual(3,add(1,2)) self.assertEqual(3,add(2,1)) def test_minus(self): print 'test_minus' self.assertEqual(1,minus(3,2)) def test_multi(self): print 'test_multi' self.assertEqual(4,multi(2,2)) def test_divide(self): print 'test_divide' self.assertEqual(2,divide(6,3)) self.assertEqual(2.5,divide(5,2)) def setUp(self): print 'do something before test.prepare environment' def tearDown(self): print 'do something after test.clear up' @classmethod def setUpClass(cls): print 'this setup only called once' @classmethod def tearDownClass(cls): print 'this tearDown only called once' if __name__ == '__main__': unittest.main()
有几个需要注意的地方:
1.这是我们自己定义的测试类,因为使用了unittest框架,所以需要继承unittest.Testcase类。
2.每一个测试函数都需要一test开头,这样会自动填充很多内容。
3.对于简单的有返回值的函数可以直接使用unittest框架的断言assertEqual()。这个断言判断两个值是否相等,如果不相等,则会测验不通过。对于上面的案例,把除法中的float删掉,那么5/2的结果应该是2.与2.5不相等,所以出现以下提示:
4.关于setUp函数和teardown函数:setUp会在每个case开始之前执行,比如说初始化一些环境,而tearDown会在每个case结束之后执行,可用于清除这个case执行完之后的痕迹。
5.关于setUpclass函数和tearDownclass函数:setUpClass函数只会在第一个case执行前之后执行,不会再每个case之前执行,tearDownclass只会在最后一个case执行完之后执行。如以上代码实例:
可以看到tearDownclass和setUpclass只调用了一次。此外需要注意这两个函数申明的时候需要加上注解:@classmethod
3.定义测试顺序
#coding=utf-8 import unittest from test_world import TestWorldFunc ''' 按顺序执行某几个函数。即可以按顺序 ''' if __name__ == '__main__': suite = unittest.TestSuite() #添加某些case的时候 tests = [TestWorldFunc("test_multi"),TestWorldFunc("test_minus"),TestWorldFunc("test_divide")] suite.addTests(tests) with open('result','a') as f: runner = unittest.TextTestRunner(stream=f,verbosity=2) runner.run(suite) suite.addTest(TestWorldFunc("test_multi"))
附上美图!妥妥的干货啊有木有?喜欢的话点击关注哦,欢迎评论收藏哦!更多精彩内容详细了解 尚学堂 !