unittest+discover批量处理自动化脚本
自動化的目的就是批量執行腳本代替手動測試的繁重勞動,單個腳本的執行較為容易,但是事實上自動化腳本時很多的,因此需要批量執行,這個時候需要用到unittest模塊里的discover方法進行多個自動化腳本的加載了。 首先建立一個工程。
在Mytest工程下創建一個case的package,并依次在case下創建baidu、blog和report的package
在baidu和blog兩個包(package)下建立測試用例,命名為test_01.py到test_04.py,4個腳本中唯一不同的是在腳本中序號依次遞增,以test_01.py為例
#test01.py #coding:utf-8import unittest import timeclass Test1(unittest.TestCase):@classmethod#def setUp(self):def setUp(cls):print "startup"@classmethod#def tearDown(self):def tearDown(cls):time.sleep(1)print "endup"def test01(self):print "執行測試用例01"def test03(self):print "執行測試用例03"def test02(self):print "執行測試用例02"if __name__ == '__main__':unittest.main()這里實用類方法初始化數據,避免了每次在調用測試用例時頻繁的初始化環境和環境恢復,使用類級別的方法初始化數據,使得各個測試方法共享這些初始化數據。在test_02.py中的類為Test2,相應的用例為test04,test06,test05,在模塊blog中相應的為Test3,相應的用例為test07,test09,test08.依次類推。
#test03.py #coding:utf-8import unittest import timeclass Test3(unittest.TestCase):def setUp(self):print "startup"def tearDown(self):time.sleep(1)print "endup"def test07(self):print "執行測試用例07"def test09(self):print "執行測試用例08"def test08(self):print "執行測試用例08"if __name__ == '__main__':unittest.main()這樣兩個模塊中共有12個測試用例
在模塊report下建立一個執行所有腳本的模塊run_all_case.py
#coding:utf-8import unittest import os#測試用例的路徑 case_path = os.path.join(os.getcwd(),"case") #報告存放路徑 report_path = os.path.join(os.getcwd(),"report") def call_case():discover = unittest.defaultTestLoader.discover(case_path,pattern="test*.py",top_level_dir=None)print discoverreturn discoverif __name__ == '__main__':runner = unittest.TextTestRunner()runner.run(call_case())發現輸出結果為:
ImportError: Start directory is not importable
說這個目錄不能導入,其實發現,要導入的是目錄\case而不是\case\case,所以存在問題,這里先查看一下目錄
case_path = os.path.join(os.getcwd(),"case") print case_path其實我們想獲取的是目錄:D:\\Python2.6.6\\Project\\imooc\\case\,因此這里使用方法如下:
#coding:utf-8import unittest import os#測試用例的路徑 case_path = os.path.dirname(__file__) print case_path #報告存放路徑 report_path = os.path.join(os.getcwd(),"report") def call_case():discover = unittest.defaultTestLoader.discover(case_path,pattern="test*.py",top_level_dir=None)print discoverreturn discoverif __name__ == '__main__':runner = unittest.TextTestRunner()runner.run(call_case())輸出結果:
總結
以上是生活随笔為你收集整理的unittest+discover批量处理自动化脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python+requests+exce
- 下一篇: 自动化测试框架搭建-配置-1