【第22期】观点:IT 行业加班,到底有没有价值?

Robot Framework自动化测试(五)--- 开发系统关键字

转载 2015年07月10日 05:56:14

本文转自虫师

Robot Framework自动化测试(五)--- 开发系统关键字

  最近一直在用robot framework 做自动化测试项目,老实说对于习惯直接使用python的情况下,被框在这个工具里各种不爽,当然,使用工具的好处也很多,降低了使用成本与难度;当然,在享受工具带来便利的同时也会受制于工具。对于特定的需求,工具没提供相关的Library和关键字的时候,就只能放弃了。

  还好robot framework提供了 Evaluate 关键字,对于Evaluate 关键字的使用等有时间再讲。当robot framework 不能解决需求,我是直接写个.py 程序,通过Evaluate 关键字调用。然后,就受到了批评,不能这么玩,动不动就这么干的话其实robot framework 就成了鸡肋,所以,规范的做法是去封装系统关键字。

  这也是本文的目的,学会了这一招之后,robot framework 就算是玩转了,当然,前提是你要懂点Python才行。

 

  其实我的需求也非常简单,接收一个目录路径,自动遍历目录下以及子目录下的所有批处理(.bat)文件并执行。

  首先在..\Python27\Lib\site-packages目录下创建CustomLibrary目录,用于放自定义的library库。在其下面创建runbat.py 文件:

复制代码
#-*- coding:utf-8 -*-
'''
    created by bugmaster 2015-01-29
'''

__version__ = '0.1'

from robot.api import logger
import os

class Runbat(object):

    def run_all_bat(self,path):
        u'''接收一个目录的路径,并执行目录下的所有bat文件.例
         | run all bat                   | filepath                 | 
        '''
        for root,dirs,files in os.walk(path):
            for f in files:
                if os.path.splitext(f)[1] == '.bat':
                    os.chdir(root)
                    #print root,f
                    os.system(f)

    def __execute_sql(self, path):
        logger.debug("Executing : %s" % path)
        print path

    def decode(self,customerstr):
        return customerstr.decode('utf-8')

if __name__ == "__main__":
    path = u'D:\\test_boject'
    run = Runbat()
    run.run_all_bat(path)
复制代码

 

注意在run_all_bat()方法下面加上清晰的注释,最好给个实例。这样在robot framework 的帮助中能看到这些信息,便于使用者理解这个关键字的使用。

  对于创建普通的模块来说这样已经ok了。但要想在robot framework启动后加载这个关键字,还需要在CustomLibrary目录下创建__init__.py文件,并且它不是空的。

 

复制代码
#  Copyright (c) 2010 Franz Allan Valencia See
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

from runbat import Runbat


__version__ = '0.1'

class CustomLibrary(Runbat):
"""
    这里也可以装x的写上我们创建的CustomLibrary如何如何。
 
    """
    
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'
复制代码

 

  这个文件中其实有用的信息就三行,但必不可少。robot framwork 在启动时会加载这个文件,因为在这个文件里指明了有个runbat文件下面有个Runbat类。从而加载类里的方法(run_all_bat())。

 

下面,启动robot framework RIDE,按F5:

 

找到了我们创建的关键字,下面就是在具体的项目或测试套件中引用CustomLibrary

然后,在具体的测试用例中使用“run all bat” 关键字。

其实核心还是会点Python ,利用工具,但又不受制于工具。

 

====================================

   前几天有个同学跑来给我发了个链接,是一个新的自动化测试工具, 然后告诉我:“你看,这工具多牛B ,能自动录制,不用写一行代码。那你说学pyhon 还有毛用”。测试工具早前面对的就是一群不会编程的人好吧。录制也早不是什么新鲜的技术了好吧。都能录制了,想想我们是不是早该下岗了。很多时候录制并不是万能,所以才有高级测试人才的生存与发展空间。如果有一天你只会录制,想想离下岗也不远了。因为新招来的任劳任怨还不嫌工资低。

-------新年快乐,明年再见。


举报

相关文章推荐

Robot Framework-用户关键字的使用方法

在进行软件自动化测试时,我们设计并编写好一个测试脚本的业务逻辑之后,需要将其中的“业务数据”提取为变量,并对业务逻辑进行封装,以便在后续的测试过程中,只需设置每次测试的测试数据,而不必更改业务逻辑。 ...

在Robot FrameWork中引用自定义关键字的过程

前提:已打开PYcharm的工程窗口 1.创建CustomLibrary的PY包 在左侧树形列表,点击展开Enternal Libraries-》Site-Packages,查找名称为CustomL...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

robot framework 自定义关键字详细过程及debug。

1: 在C:\Python27\Lib\site-packages\ 文件夹下, 新建python package文件夹 ,例如我的是ATestLibrary 2: 在C:\Python27\...

Robot Framework +Appium的简单教程及实例

RF+appium学习笔记 RF官网 http://robotframework.org/#test-libraries github学习 https://github.com/robotframew...
  • xyh421
  • xyh421
  • 2016-08-04 15:43
  • 5755

Robot Framework 内建库关键字

Robot Framework 内建库 内建库也映射成了用户关键字,需要的自取。 *** Keywords *** 失败后继续运行 [Arguments] ${keyword} @...

Robot Framework + appium库 增加元素是否存在关键字

Robot Framework+appium 进行iOS自动化测试中遇到一个问题,需求是这样的:进入账单列表,如果存在账单消费记录就点击任意账单查看详情。账单列表有无消费记录的情况,这个时候就需要判断...

Robot Framework自定义封装关键字方法【精华贴】

这篇文章我之前发表过,可是后来编辑了一下,就再也没显示了,心里很不爽啊,今天特意在写一次。(在我没发表之前我没有搜索到关于自定义封装的,故自行苦行摸索将其研究出来了,如果能帮上大家忙,望顶起!),下面...

Robot Framework自动化测试-开发系统关键字

喜欢使用RF的原因之一就是能自己定义关键字,超赞!!! 这篇就简单说下如何创建系统关键字,先来个最简单的,求两个数的和(真的超级简单)。首先在安装目录\Python27\Lib\site-packa...

robot framework封装自定义关键字方法

RIDE封装自定义关键字方法:到python目录下找到.. \site-packages\Selenium2Library\keywords中的_browsermanagement.py文件def自己...

robotframework(rf)中对时间操作的datetime库常用关键字

对robotframework datetime编写demo
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)