目录
模块定义
- unittest是python自带的单元测试框架。
- 要使用unittest模块就需要明确什么样的测试用例才能被unittest组织并执行,下面依次进行介绍。
python代码批量生成的测试用例所包含的方法
- 比如在python实现的接口自动化测试过程中,通过python代码批量生成测试用例类(继承unittest.TestCase),在类中实现以test开头的测试用例方法,一个测试用例类可以包含多个test开头的测试用例方法,然后再通过unittest模块的关键方法实现组织测试用例批量执行、断言并生成测试结果。以下列出完整的一个测试类包含的方法:
- class PushOrder(unittest.TestCase) ,生成一个类并继承unittest.TestCase
- def setUp(self) ,用于在每个用例执行前做初始化工作,如连接数据库、加载EXCEL等。一条用例执行一次,多条用例执行多次。
- def tearDown(self) 用于执行完测试用例后的收尾工作,比如断开数据库连接,关闭文件等。一条用例执行一次,多条用例执行多次。
- def test_pushOrder(self), 在这个方法中完成了请求入参的拼接、请求的触发、根据检查点对响应结果做校验、响应结果的存储、依赖数据的存储、执行结果的写入等。
- 注,测试固件setUp和tearDown每次执行用例都会重新执行,如果想更高效可以使用类方法,可以用类方法setUpClass()在所有用例执行前就一次性的准备好环境,用类方法tearDownClass()所有用例执行完后再清理环境。
-
... class ApushOrder(unittest.TestCase): """ApushOrder""" @classmethod def setUpClass(cls): print "This setUpClass() method only called once." @classmethod def tearDownClass(cls): print "This tearDownClass() method only called once too." ...
-
- unittest会自动识别test开头的方法为测试代码,不以test开头的方法不会被unittest组织并执行。
- unittest对test开头的测试用例方法的相关装饰器包括:
- @unittest.skip(reason) 不执行该用例,跳过。
- @unittest.skipif(condition, reason) 条件为真跳过该用例。
- @unittest.skipUnless(condition, reason) 条件为假跳过该用例。
- @unittest.expectedFailure 将测试用例标记为“预期失败”。
- @unittest.SkipTest(resaon) 跳过测试方法,可以在测试方法或者setUp()中调用该方法。
unittest模块组织并执行上述用例的关键方法
- 主要流程就是加载测试用例->把测试用例加入到测试套件中->通过runner执行测试套件。
- Unittest.TestLoader()、Unittest.TestSuit()、Unittest.TextTestRunner()。
- Unittest.TestLoader()加载测试用例类,加载测试用例相关方法:
- loadTestsFromTestCase()
- testcase = unittest.TestLoader().loadTestsFromTestCase(testCaseClass),testCaseClass即PushOrder类,这里的类必须是Unittest.TestCsse的子类。
- loadTestsFromModule()
- loadTestsFromTestCase()