python自动化如何断言用例_python接口自动化(二十六)--批量执行用例 discover(详解)...

简介

我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后,用 unittest 里面的 TextTestRunner 这里类的 run 方法去一次执行多个脚

本的用例。那么前边介绍那么多都是半道开始,半道出家,这篇就带大家从头到尾,一步一步给小伙伴们详细介绍一下。

新建测试项目

1、pycharm 左上角 File>New Projetc>Pure Python,在 location 位置命名一个测试工程的名称:honggetest

2、然后点击“Create”

3、选中刚才新建的工程右键>New>Python Package>新建一个 case 文件夹

4、重复第 3 步的操作,新建一个 case 的文件夹,在里面添加一个 baidu 和一个 blog 的文件夹,里面分别有两个用例的脚本,如下图所示。test_01,test_02,test_03,test_04 是我们写用例的脚本

5、test_01创建完后,打开脚本,写入用例,其他的可以复制即可

6、参考代码

1 # coding:utf-8 2 import unittest 3 import time 4 5 class Test(unittest.TestCase): 6 def setUp(self): 7 print ("start!") 8 def tearDown(self): 9 time.sleep(1) 10 print ("end!") 11 def test01(self): 12 print ("执行测试用例 01") 13 def test02(self): 14 print ("执行测试用例 02") 15 def test03(self): 16 print ("执行测试用例 03") 17 18 if __name__ == "__main__": 19 unittest.main()

7、在 honggetest 这个项目下面创建一个脚本 run_all_case.py,接下来用这个脚本去批量执行所有的用例。

discover 加载测试用例

1、discover 方法里面有三个参数:

-case_dir:这个是待执行用例的目录。

-pattern:这个是匹配脚本名称的规则,test*.py 意思是匹配 test 开头的所有脚本。

-top_level_dir:这个是顶层目录的名称,一般默认等于 None 就行了。

2、discover 加载到的用例是一个 list 集合,需要重新写入到一个 list 对象 testcase 里,这样就可以用 unittest 里面的 TextTestRunner 这里类的 run 方法去执行。

3、运行后结果入下,就是加载到的所有测试用例了:

参考代码

1 # coding=utf-8 2 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 3 4 #2.注释:包括记录创建时间,创建人,项目名称。 5 ''' 6 Created on 2019-4-29 7 @author: 北京-宏哥 8 Project:学习和使用discover批量执行测试用例 9 ''' 10 #3.导入unittest模块 11 import unittest 12 #4.编写测试用例和断言 13 def all_case(): 14 # 待执行用例的目录 15 case_dir = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\case" 16 testcase = unittest.TestSuite() 17 discover = unittest.defaultTestLoader.discover(case_dir, 18 pattern="test*.py", 19 top_level_dir=None) 20 #discover方法筛选出用例,循环添加到测试套件中 21 for test_suit in discover: 22 for test_case in test_suit: 23 #添加用力到testcase 24 testcase.addTests(test_case) 25 print(testcase) 26 return testcase 27 if __name__ == "__main__": 28 # 返回实例 29 runner = unittest.TextTestRunner() 30 # run 所有用例 31 runner.run(all_case())

run 测试用例

1、为了更方便的理解,可以把上面 discover 加载用例的方法封装下,写成一个函数

2、先返回 TextTestRunner()类的实例

3、调用 run 方法去执行 all_case()这个函数

参考代码

# coding=utf-8 #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 #2.注释:包括记录创建时间,创建人,项目名称。 ''' Created on 2019-4-29 @author: 北京-宏哥 Project:学习和使用discover批量执行测试用例 ''' #3.导入unittest模块 import unittest #4.编写测试用例和断言 def all_case(): # 待执行用例的目录 case_dir = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\case" testcase = unittest.TestSuite() discover = unittest.defaultTestLoader.discover(case_dir, pattern="test*.py", top_level_dir=None) testcase.addTests(discover) # 直接加载 discover 可以兼容python2和3 print(testcase) return testcase if __name__ == "__main__": # 返回实例 runner = unittest.TextTestRunner() # run 所有用例 runner.run(all_case())

小结

1、unittest模块中的TestLoader类有一个discover方法(Python2.7之后)discover(start_dir, pattern='test*.py',top_level_dir=None)递归查找指定目录(start_dir)及其子目录下的全部测试模块,将这些测试模块放入一个TestSuite 对象并返

回。只有匹配pattern的测试文件才会被加载到TestSuite中。如果一个测试文件的名称符合pattern,将检查该文件是否包含 load_tests() 函数,如果 load_tests() 函数存在,则由该函数负责加载本文件中的测试用例。如果不存在,就会执行

loadTestsFromModule(),查找该文件中派生自TestCase 的类包含的 test 开头的方法。

2、用例路径另一种写法

1 case_dir = os.path.join(os.getcwd(), "case")

为了方便大家在移动端也能看到我分享的博文,现已注册个人微信公众号,扫描左下方二维码即可,欢迎大家关注,有时间会及时分享相关技术博文。

为了方便大家互动讨论相关技术问题,现已组建专门的微信群,由于微信群满100,请您扫描右下方宏哥个人微信二维码拉你进群(请务必备注:已关注公众号进群),欢迎大家加入这个大家庭,我们一起畅游知识的海洋。

感谢您花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让博主能喝上一杯咖啡,在此谢过了!

如果您觉得阅读本文对您有帮助,请点一下左下角“推荐”按钮,您的“推荐”将是我最大的写作动力!另外您也可以选择a href="">【关注我】,可以很方便找到我!

本文版权归作者和博客园共有,来源网址:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值