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