简介 
  我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 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”)

python接口自动化(二十六)--批量执行用例 discover(详解)相关推荐

  1. python接口自动化(十九)--Json 数据处理---实战(详解)

    简介 上一篇说了关于json数据处理,是为了断言方便,这篇就带各位小伙伴实战一下.首先捋一下思路,然后根据思路一步一步的去实现和实战,不要一开始就盲目的动手和无头苍蝇一样到处乱撞,撞得头破血流后而放弃 ...

  2. python接口自动化(十六)--参数关联接口后传(详解)

    简介 大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础.因此再在沙场实例演练一下博客园的相关接口.我们用自动化发随笔之后,要想接着对这篇随笔操 ...

  3. python接口自动化(十三)--cookie绕过验证码登录(详解)

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

  4. python接口自动化测试二十四:上传多个附件,参数化

    python接口自动化测试二十四:上传多个附件,参数化 # 添加多个附件参数化files = [("1.png", "1.png") ("2.png& ...

  5. python接口自动化(二十五)--unittest断言——下(详解)

    简介 本篇还是回归到我们最初始的话题,想必大家都忘记了,没关系看这里:传送门  没错最初的话题就是登录,由于博客园的登录机制改变了,本篇以我找到的开源免费的登录API为案例,结合 unittest 框 ...

  6. python自动化测试断言_python接口自动化(二十五)--unittest断言——下(详解)...

    本文转载自: https://www.cnblogs.com/du-hong/p/10766314.html 简介 本篇还是回归到我们最初始的话题,想必大家都忘记了,没关系看这里:传送门  没错最初的 ...

  7. python接口自动化(十)--post请求四种传送正文方式(详解)

    简介 post请求我在python接口自动化(八)–发送post请求的接口(详解)已经讲过一部分了,主要是发送一些较长的数据,还有就是数据比较安全等.我们要知道post请求四种传送正文方式首先需要先了 ...

  8. (二)postman批量执行用例

    postman批量执行用例 步骤 step1:新建测试用例集合 接口测试主要涉及增删改查,每个接口可能会有依赖关系,比如登陆接口主要先获取授权,获得token值后才可进行登录,所以需要将第一个接口的返 ...

  9. python绕过验证码登录_python接口自动化(十三)--cookie绕过验证码登录(详解)...

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

最新文章

  1. Facebook人工智能副总裁:AI 这一领域很快就会「碰壁」
  2. [转]PHP: 深入pack/unpack
  3. CentOS学习笔记 - 4. 修改端口和禁止root登录
  4. 如何让LINUX程序运行在多CPU?
  5. 拿到BAT等大厂offer以后,我发现了关于秋招的一些真相
  6. Insertion Sort Aizu - ALDS1_1_A
  7. 牛客 - 小A的回文串(Manacher模板题)
  8. 成长 | 《大厂晋升指南》学习总结(中)
  9. activiti 5.22的demo运行
  10. mysql(1):查找语句练习
  11. android 根据bounds坐标进行点击操作_炫酷的Android时钟UI控件,隔壁产品都馋哭了...
  12. 宽字符编码和解码通用类[CodeWidthChartUtility]
  13. 2012年7月份第4周51Aspx源码发布详情
  14. unix linux系统版本,怎么查看UNIX系统版本?
  15. 我可以在不提供FTP访问的情况下安装/更新WordPress插件吗?
  16. ‘net’ 不是内部命令或外部命令,也不是可运行的程序或批处理文件
  17. 软考中级软件设计师考试大纲
  18. 火车采集器采集ajax,火车头采集器JavaScript之ajax网站采集实例教程
  19. 数据类型,生命周期作用域
  20. MAC BOOK用命令解压RAR文件

热门文章

  1. CodeForces 214B Hometask
  2. jquery-添加/删除cookie
  3. Spring3核心技术之AOP配置【转】
  4. (9) tomcat中实现同一虚拟机中所有应用程序单点登录SSO
  5. pwershell custom objects
  6. undefined reference to `main`
  7. [转]Vmware ESX 4上虚拟机 Redhat 5.2(CentOS 5.2)启动在Starting udev 停几个小时
  8. 硬盘分区表和文件分配表格式
  9. 推荐系统的变与不变:冷启动、召回排序、长期生态与目标拆解
  10. 【白皮书分享】2021年互联网人才招聘白皮书.pdf(附下载链接)