前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium2+python自动化53-unittest批量执行(discover)

Selenium2+python自动化53-unittest批量执行(discover)

作者头像
上海-悠悠
发布2018-04-08 16:06:43
6850
发布2018-04-08 16:06:43
举报

前言

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

加载用例后,用unittest里面的TextTestRunner这里类的run方法去一次执行多个脚本的用例。

一、新建测试项目

1.pycharm左上角File>New Projetc>Pure Python,在location位置命名一个测试工程的名称:yoyotest,然后保存

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

3.重复第2步的操作,新建一个case的文件夹,在里面添加一个baidu和一个blog的文件夹,里面分别有两个用例的脚本,如下图所示。

test_01,test_02,test_03,test_04是我们写用例的脚本

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

二、diascover加载测试用例

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

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

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

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

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

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

代码语言:javascript
复制
<unittest.suite.TestSuite  tests=[<baidu.test_01.Test testMethod=test01>,  <baidu.test_01.Test testMethod=test02>, <baidu.test_01.Test  testMethod=test03>, <baidu.test_02.Test testMethod=test01>,  <baidu.test_02.Test testMethod=test02>, <baidu.test_02.Test  testMethod=test03>, <bolg.test_03.Test testMethod=test01>,  <bolg.test_03.Test testMethod=test02>, <bolg.test_03.Test  testMethod=test03>, <bolg.test_04.Test testMethod=test01>,  <bolg.test_04.Test testMethod=test02>, <bolg.test_04.Test  testMethod=test03>]>

三、run测试用例

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

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

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

四、参考代码:

代码语言:javascript
复制
# coding:utf-8
import unittest

def all_case():
    # 待执行用例的目录
    case_dir = "D:\\test\\yoyotest\\case"

    testcase = unittest.TestSuite()
    discover = unittest.defaultTestLoader.discover(case_dir,
                                                   pattern="test*.py",
                                                   top_level_dir=None)
    # discover方法筛选出来的用例,循环添加到测试套件中
    for test_suite in discover:
        for test_case in test_suite:
            # 添加用例到testcase
            testcase.addTests(test_case)
    print testcase
    return testcase

if __name__ == "__main__":
    # 返回实例
    runner = unittest.TextTestRunner()
    # run所有用例
    runner.run(all_case())

学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:232607095

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档