测试用例分层

引入测试用例集,将测试用例与测试集合分开

  • 首先可以先在一个文件中写好测试用例模块,然后在另一个文件中导入这个模块,再使用  unittest.TestSuite类  创建测试套件,然后使用这个类的addTest() 方法将需要被测试的测试用例添加到测试套件中,最后使用  unittest.TextTestRunner类  中的run()方法来运行suite所组装的测试用例;
  • 测试用例模块
  1. from unittest import TestCase
  2. from unittest import skip
  3. from unittest import main as main_method
  4. class MyTestCase(TestCase):
  5. @classmethod
  6. def setUpClass(cls):
  7. print('setUpClass')
  8. @classmethod
  9. def tearDownClass(cls):
  10. print('tearDownClass')
  11. def test_print1(self):
  12. print('第一个测试用例')
  13. self.assertEqual(200, 200, '测试失败')
  14. def test_print2(self):
  15. print('第一个测试用例')
  16. @skip('do not need test_print3')
  17. def test_print3(self):
  18. print('第一个测试用例')
  19. if __name__ == '__main__':
  20. main_method()
  21.  
  • 测试集模块
  1. from test1 import MyTestCase
  2. from unittest import TestSuite, TextTestRunner
  3. suite = TestSuite()
  4. # 在测试用例集中添加测试用例, 只添加两个测试的方法
  5. suite.addTest(MyTestCase('test_print1'))
  6. suite.addTest(MyTestCase('test_print3'))
  7. if __name__ == '__main__':
  8. # 创建测试runner,执行测试用例集
  9. runner = TextTestRunner()
  10. runner.run(suite)
  11. =========输出=============
  12. setUpClass
  13. 第一个测试用例
  14. tearDownClass
  15.  

我们运行这段代码,只有第一个测试用例输出,因为我们只将第一个和第三个测试用例加入到测试集中,所有第二个测试用例不会执行,而我们在第三个测试用例前面机上了skip装饰器会跳过此测试用例,所有第三个也不会执行啦。

将待测试函数、测试用例、测试用例集分开

  • 将待测试函数、测试用例、测试用例集分别放在不同的文件中,先在测试用例中导入待测试函数,然后使用断言判断函数是否正确,接着在测试用例集中创健测试套件,且将测试用例加入套件里面,最后运行;
  • 测试函数
  1. def add(x, y):
  2. return x + y
  3. def sub(x, y):
  4. return x - y
  5.  
  • 测试用例
  1. from unittest import TestCase
  2. from unittest import skip
  3. from unittest import main as main_method
  4. from add_sub import add, sub
  5. class MyTestCase(TestCase):
  6. @classmethod
  7. def setUpClass(cls):
  8. print('setUpClass')
  9. @classmethod
  10. def tearDownClass(cls):
  11. print('tearDownClass')
  12. def test_print1(self):
  13. ret = 1 + 2
  14. result = add(1, 2)
  15. self.assertEqual(result, ret, 'test_print1测试失败')
  16. def test_print2(self):
  17. print('第二个测试用例')
  18. @skip('do not need test_print3')
  19. def test_print3(self):
  20. print('第三个测试用例')
  21. if __name__ == '__main__':
  22. main_method()
  23.  
  • 测试用例集
  1. from test import MyTestCase
  2. from unittest import TestSuite, TextTestRunner
  3. suite = TestSuite()
  4. # 在测试用例集中添加测试用例
  5. suite.addTest(MyTestCase('test_print1'))
  6. suite.addTest(MyTestCase('test_print2'))
  7. suite.addTest(MyTestCase('test_print3'))
  8. if __name__ == '__main__':
  9. # 创建测试runner,执行测试用例集
  10. runner = TextTestRunner()
  11. runner.run(suite)
  12. ========输出=========
  13. setUpClass
  14. 第一个测试用例
  15. 第二个测试用例
  16. tearDownClass

http://blog.itpub.net/69908432/viewspace-2647362/

posted @ 2020-04-06 22:44  lulu晶  阅读(341)  评论(0)    收藏  举报