1、导入unittest:import unittest
2、新建测试类,继承 unittest.TestCase:class TestStringMethods(unittest.TestCase):
3、编写测试方法(例如一个命名以test开头的方法)以执行特定的测试代码,多个测试运行的顺序由内置字符串排序方法对测试名进行排序的结果决定。def test_upper(self):
4、测试方法里面含有断言,若测试不通过,将会引发一个带有说明信息的异常,并且unittest会将这个测试用例标记为测试不通过。任何其它类型的异常将会被当做错误处理。self.assertEqual('foo'.upper(), 'FOO')
5、可能同时存在多个前置操作相同的测试,我们可以把测试的前置操作从测试代码中拆解出来,并实现测试前置方法setUp()。在运行测试时,测试框架会自动地为每个单独测试调用前置方法。在测试运行时,若setUp()方法引发异常,测试框架会认为测试发生了错误,因此测试方法不会被运行。
def setUp(self):
print("在每个用例执行之前")
6、tearDown()方法在测试方法运行后进行清理工作。若setUp()成功运行,无论测试方法是否成功,都会运行tearDown()。
def tearDown(self):
print("在每个用例执行之后")
7、在运行每个测试时,setUp()、tearDown()和__init__()会被调用一次。
图18、自定义你的测试套件,包括执行顺序:
图2def suite():
suite = unittest.TestSuite()
suite.addTest(TestStringMethods('test_upper'))
suite.addTest(TestStringMethods('test_isupper'))
return suite
9、运行测试套件:
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
10、模块命名以test开头比如test_gw_unit.y,则可以命令行运行或者探索性测试。按字符串排序执行所有test开头的方法:
图3
网友评论