文章目录
转载请注明原始出处:http://blog.youkuaiyun.com/a464057216/article/details/51889564
后续此博客不再更新,欢迎大家搜索关注微信公众号“测开之美”,测试开发工程师技术修炼小站,持续学习持续进步。
这篇博客详细介绍Python的unittest模块内部的类及方法的更多内容。
#unittest.TestCase类#
class unittest.TestCase(methodName='runTest')
这个类的实例表示一个测试用例,默认的methodName是runTest
,即最简单的测试用例类的定义只包含runTest
方法的定义。如果同时定义了runTest
方法和以test开头命名的方法,会忽略runTest
方法。如果要指定执行某些方法,可以这样:
suite = unittest.TestSuite()
suite.addTest(Test('test_al'))
unittest.TextTestRunner(verbosity=2).run(suite)
TestCase类中定义的方法分为三大类:测试执行;结果检查及错误上报;查询测试用例信息。
##测试执行##
###setUp()###
在执行每个测试用例之前被执行,任何异常(除了unittest.SkipTest
和AssertionError
异常以外)都会当做是error而不是failure,且会终止当前测试用例的执行。
###tearDown()###
执行了setUp()
方法后,不论测试用例执行是否成功,都执行tearDown()
方法。如果tearDown()的代码有异常(除了unittest.SkipTest
和AssertionError
异常以外),会多算一个error。
###setUpClass(cls)与tearDownClass(cls)###
测试用例们被执行前、后执行的方法,定义时必须加上classmethod装饰符,比如:
import unittest
class MyTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
print 'set up class ran'
def setUp(self):
print 'set up test case ran'
def test_equal(self):
self.assertEqual(1, 1, '1 not equals 1')
def test_true(self):
self.assertTrue('LOO'.isupper(), 'LOO not upper')
def tearDown(self):
print 'tear down test case ran'
@classmethod
def tearDownClass(cls):
print 'tear down class ran'
测试结果如下:
$ python -m unittest unit
set up class ran
set up test case ran
tear down test case ran
.set up test case ran
tear down test case ran
.tear down class ran
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
###skipTest(reason)###
在某个测试用例函数的定义中调用skipTest(reason)会忽略这个测试用例的执行,在setUp()方法中调用,会忽略所有测试