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 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自动化测试(五)--- 开发系统关键字相关推荐
- Robot Framework自动化测试框架核心指南-如何使用Java编写自定义的RobotFramework Lib
如何使用Java编写自定义的RobotFramework Lib 本文包括2个章节 1. Robot Frdamwork中如何调用java Lib库 2.使用 java编写自定义的Lib 本文作者为: ...
- Robot Framework 自动化测试框架核心指南-初识Robot Framework(学习笔记2)
初识Robot Framework 1.1如何创建一个自动化测试项目 1.1.2 创建测试套件 1.1.3 创建测试用例 1.2 Robot Framework基础关键字 1.2.1 如何搜索Robo ...
- Robot Framework 教程 (3) - Resource及关键字 的使用
From:http://www.cnblogs.com/buaawp/p/4754399.html Robot Framework 教程 (3) - Resource及关键字 的使用 在进行软件自动化 ...
- Jenkins上配置Robot Framework自动化测试脚本工程
Jenkins上配置Robot Framework自动化测试脚本工程 现在越来越多的项目组开始引入敏捷,其中对于我们的自动化测试也有了一些新的要求.至少要把我们做的自动化案例能够持续地跑起来,能够在敏 ...
- Robot Framework自动化测试(六)--- robotremoteserver使用
robotremoteserver 是什么? Python Remote Server for Robot Framework 下载地址:https://pypi.python.org/pypi/ro ...
- Robot Framework自动化测试教程-通过RIDE创建工程、测试套、测试用例、测试资源、变量文件,引入测试库
1. 创建测试工程 RIDE工具中有Project概念,实际上Robot Framework中是没有工程的概念,可以理解为最顶层的测试套. 1.1. 新建测试工程 点击 File–>New Pr ...
- Robot Framework自动化测试(二)---元素定位
不要误认为Robot framework 只是个web UI测试工具,更正确的理解Robot framework是个测试框架,之所以可以拿来做web UI层的自动化是国为我们加入了selenium2的 ...
- Robot Framework自动化测试解决selenium2library加载失败
=======所需环境=================== Python: https://www.python.org/ RF框架是基于python 的,所以一定要有python环境. Robot ...
- Robot Framework自动化测试(一)--- 安装
所需环境: 1.python 2.robotframework https://pypi.python.org/pypi/robotframework/2.8.5#downloads 3.wxPyth ...
最新文章
- android 解压版sdk安装的问题
- PHP 中文文件名 空格等 CURL 读取
- python中if嵌套语句_python_if判断_三_if的嵌套
- Intel Haswell/Broadwell架构/微架构/流水线 (2)-流水线前端
- Java编程时如何节省内存,效率高
- Android自定义view之事件传递机制
- mysql客户端攻击_HackerNews
- Django---部署
- 三维重建笔记_三维重建方法导图
- Windows下使用platform.pk8 和platform.x509.pem生成Android studio签名文件
- iis6xp_xp安装iis6步骤方法
- TCP可靠传输实现-滑动窗口协议
- 使用Python对比两个excel表格中的重复数据
- 终于有人把“教育内卷”讲明白了
- 为了销量!苹果恐要iPhone SE降价:不到2千买吗?
- 微服务等于 Spring Cloud?了解微服务架构和框架
- matlab迭代实现矩阵运算,用matlab实现Rayleigh迭代计算矩阵特征值的程序
- PC微信聊天记录备份恢复测试
- iOS10开发哪些坑
- JAVA兴趣小组申请理由_关于参与兴趣小组申请书范文