最近一直在用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 osclass 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,fos.system(f)def __execute_sql(self, path):logger.debug("Executing : %s" % path)print pathdef 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 还有毛用”。测试工具早前面对的就是一群不会编程的人好吧。录制也早不是什么新鲜的技术了好吧。都能录制了,想想我们是不是早该下岗了。很多时候录制并不是万能,所以才有高级测试人才的生存与发展空间。如果有一天你只会录制,想想离下岗也不远了。因为新招来的任劳任怨还不嫌工资低。

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

转载于:https://www.cnblogs.com/zhangfeivip/p/10110807.html

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

  1. Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib

    如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...

  2. Robot Framework 自动化测试框架核心指南-初识Robot Framework(学习笔记2)

    初识Robot Framework 1.1如何创建一个自动化测试项目 1.1.2 创建测试套件 1.1.3 创建测试用例 1.2 Robot Framework基础关键字 1.2.1 如何搜索Robo ...

  3. Robot Framework 教程 (3) - Resource及关键字 的使用

    From:http://www.cnblogs.com/buaawp/p/4754399.html Robot Framework 教程 (3) - Resource及关键字 的使用 在进行软件自动化 ...

  4. Jenkins上配置Robot Framework自动化测试脚本工程

    Jenkins上配置Robot Framework自动化测试脚本工程 现在越来越多的项目组开始引入敏捷,其中对于我们的自动化测试也有了一些新的要求.至少要把我们做的自动化案例能够持续地跑起来,能够在敏 ...

  5. Robot Framework自动化测试(六)--- robotremoteserver使用

    robotremoteserver 是什么? Python Remote Server for Robot Framework 下载地址:https://pypi.python.org/pypi/ro ...

  6. Robot Framework自动化测试教程-通过RIDE创建工程、测试套、测试用例、测试资源、变量文件,引入测试库

    1. 创建测试工程 RIDE工具中有Project概念,实际上Robot Framework中是没有工程的概念,可以理解为最顶层的测试套. 1.1. 新建测试工程 点击 File–>New Pr ...

  7. Robot Framework自动化测试(二)---元素定位

    不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了selenium2的 ...

  8. Robot Framework自动化测试解决selenium2library加载失败

    =======所需环境=================== Python: https://www.python.org/ RF框架是基于python 的,所以一定要有python环境. Robot ...

  9. Robot Framework自动化测试(一)--- 安装

    所需环境: 1.python 2.robotframework https://pypi.python.org/pypi/robotframework/2.8.5#downloads 3.wxPyth ...

最新文章

  1. android 解压版sdk安装的问题
  2. PHP 中文文件名 空格等 CURL 读取
  3. python中if嵌套语句_python_if判断_三_if的嵌套
  4. Intel Haswell/Broadwell架构/微架构/流水线 (2)-流水线前端
  5. Java编程时如何节省内存,效率高
  6. Android自定义view之事件传递机制
  7. mysql客户端攻击_HackerNews
  8. Django---部署
  9. 三维重建笔记_三维重建方法导图
  10. Windows下使用platform.pk8 和platform.x509.pem生成Android studio签名文件
  11. iis6xp_xp安装iis6步骤方法
  12. TCP可靠传输实现-滑动窗口协议
  13. 使用Python对比两个excel表格中的重复数据
  14. 终于有人把“教育内卷”讲明白了
  15. 为了销量!苹果恐要iPhone SE降价:不到2千买吗?
  16. 微服务等于 Spring Cloud?了解微服务架构和框架
  17. matlab迭代实现矩阵运算,用matlab实现Rayleigh迭代计算矩阵特征值的程序
  18. PC微信聊天记录备份恢复测试
  19. iOS10开发哪些坑
  20. JAVA兴趣小组申请理由_关于参与兴趣小组申请书范文

热门文章

  1. 2017 码云最火开源项目 TOP 50,你用过哪些?
  2. 短信广告中虚拟网关发送与电信网关发送的区别
  3. python正则表达式中group
  4. python查看运行内存占用_python中使用psutil查看内存占用的情况
  5. tensorflow版本及其对应环境
  6. 自然语言处理中的预训练模型 —— 邱锡鹏老师的演讲记录
  7. 浅析Python3中的bytes和str类型(转载)
  8. JS基础02之流程控制语句
  9. Java如何读指定行
  10. TensorFlow第九步CNN BP算法学习