標籤:inf stc case 分享 method runner pattern port .com
我們日常項目中的介面測試案例肯定不止一個,當案例越來越多時我們如何管理這些批量案例?如何保證案例不重複?如果案例非常多(成百上千,甚至更多)時如何保證案例執行的效率?如何做(批量)測試資料的管理?如何做到資料與指令碼分離?
以上這些問題才是我們自動化測試中要重點考慮的問題,單個用例其實並不難。
來看一下在unittest架構中如何管理批量案例:
一、手工載入批量用例:
# -*- coding:utf-8 -*-# 批量用例執行--手工載入import unittestclass TestOne(unittest.TestCase): def setUp(self): print ‘\ncases before‘ pass def test_add(self): ‘‘‘test add method‘‘‘ print ‘add...‘ a = 3 + 4 b = 7 self.assertEqual(a, b) def test_sub(self): ‘‘‘test sub method‘‘‘ print ‘sub...‘ a = 10 - 5 b = 5 self.assertEqual(a, b) def tearDown(self): print ‘case after‘ passif __name__ == ‘__main__‘: # 1、構造用例集 suite = unittest.TestSuite() # 2、執行順序是安載入順序:先執行test_sub,再執行test_add suite.addTest(TestOne("test_sub")) suite.addTest(TestOne("test_add")) # 3、執行個體化runner類 runner = unittest.TextTestRunner()
# 4、執行測試 runner.run(suite)
二、自動載入批量用例:
# -*- coding:utf-8 -*-# 批量用例執行--自動載入import unittestimport osclass TestOne(unittest.TestCase): def setUp(self): print ‘\ncases before‘ pass def test_add(self): ‘‘‘test add method‘‘‘ print ‘add...‘ a = 3 + 4 b = 7 self.assertEqual(a, b) def test_sub(self): ‘‘‘test sub method‘‘‘ print ‘sub...‘ a = 10 - 5 b = 5 self.assertEqual(a, b) def tearDown(self): print ‘case after‘ passif __name__ == ‘__main__‘: # 1、設定待執行用例的目錄 test_dir = os.path.join(os.getcwd()) # 2、自動搜尋指定目錄下的cas,構造測試集,執行順序是命名順序:先執行test_add,再執行test_sub discover = unittest.defaultTestLoader.discover(test_dir, pattern=‘test_*.py‘) # 執行個體化TextTestRunner類 runner = unittest.TextTestRunner() # 使用run()方法運行測試套件(即運行測試套件中的所有用例) runner.run(discover)
以上只是解決了如何管理批量案例的問題,其它的問題如何做(批量)測試資料的管理?如何做到資料與指令碼分離?後續在介紹。
python 介面自動化測試(六)使用unittest 批量用例管理