欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

unittest+discover批量处理自动化脚本

发布时间:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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批量处理自动化脚本的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。