python:unittest(测试框架)
一,基本概念
- TestCase:所有测试用例的基类
- TestLoad:加载测试用例,返回TestSuite(测试套件)
- TestSuite:创建测试套件
- TextTestRunner:运行测试用例
- TextTestResult:测试结果(包含 运行多少,错误多少,失败多少)
二,创建测试用例类
- 必须继承TestCase
- 测试用例的名字必须以test开头
- 定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
- 一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要是调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
- 调用unittest.main()启动自动测试
- 如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参数显示详细信息。
三,有选择的测试
unittest.
skip
(reason)unittest.
skipIf
(condition, reason)unittest.
skipUnless
(condition, reason)unittest.
expectedFailure
()
# coding=utf-8 class testclass: def sum(self , x, y): return x + y def sub(self , x, y): return x - y
#coding=utf-8 import unittest from myclass import myclass class simpleTest(unittest.TestCase): def setUp(self): print 'start test.....' self.tclass=myclass.testclass() def tearDown(self): print 'end test.....' def testsum(self): self.assertEqual(self.tclass.sum(1, 2),3,'sum test fail') def testsub(self): self.assertEqual(self.tclass.sub(2, 1),1, 'sub test fail') if __name__ == '__main__': # suite=unittest.TestLoader().loadTestsFromTestCase(simpleTest) # unittest.TextTestRunner.verbosity(2).run(suite) for key in dir(unittest):#查看该模块所有类 print key unittest.main()
#coding=utf-8 import sys import unittest from myclass import myclass #测试模块中某一个类中的函数 #定义两个测试用例 class mytest(unittest.TestCase): def setUp(self): self.tclass=myclass.testclass() def tearDown(self): pass @unittest.skip("skipping") def testsum(self): self.assertEqual(self.tclass.sum(1, 2),3,'test sum fail') @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows") def testsub(self): self.assertEqual(self.tclass.sub(2, 1),1,'test sum fail') if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(mytest)#构建测试套件 # suite = unittest.TestSuite([suite1, suite2]) 可以添加多个套件 result= unittest.TextTestRunner(verbosity=2).run(suite) print result
作者:奋斗的珞珞
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.