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 还有毛用”。测试工具早前面对的就是一群不会编程的人好吧。录制也早不是什么新鲜的技术了好吧。都能录制了,想想我们是不是早该下岗了。很多时候录制并不是万能,所以才有高级测试人才的生存与发展空间。如果有一天你只会录制,想想离下岗也不远了。因为新招来的任劳任怨还不嫌工资低。

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

目录
相关文章
|
17小时前
|
传感器 存储 数据采集
LabVIEW MEMS电容式压力传感器测试系统
LabVIEW MEMS电容式压力传感器测试系统
24 4
|
20小时前
|
传感器 数据采集 算法
LabVIEW无人机大气数据智能测试系统
LabVIEW无人机大气数据智能测试系统
10 3
|
21小时前
|
数据采集 测试技术 数据处理
LabVIEW高温摩擦磨损测试系统
LabVIEW高温摩擦磨损测试系统
|
22小时前
|
机器学习/深度学习 计算机视觉
LabVIEW开发自动读取指针式仪表测试系统
LabVIEW开发自动读取指针式仪表测试系统
14 7
|
22小时前
|
安全 测试技术 持续交付
在Python Web开发中,测试是一个至关重要的环节
【5月更文挑战第12天】在Python Web开发中,测试至关重要,包括单元测试(unittest模块)、集成测试、功能测试、系统测试、验收测试、性能测试、安全测试和端到端测试。常用的测试工具有unittest、pytest、selenium、requests和coverage。遵循“测试先行”和“持续集成”原则,确保代码质量与稳定性。
8 3
|
1天前
|
数据挖掘 测试技术 网络安全
LabVIEW开发卫星测试平台
LabVIEW开发卫星测试平台
|
1天前
|
数据采集 编解码
LabVIEW开发教学实验室自动化INL和DNL测试系统
LabVIEW开发教学实验室自动化INL和DNL测试系统
|
1天前
|
存储 传感器 算法
LabVIEW开发实时自动化多物镜云计算全玻片成像装置
LabVIEW开发实时自动化多物镜云计算全玻片成像装置
|
2天前
|
监控 网络安全
LabVIEW开发干扰对无线网络基础设施进行隐蔽影响测试
LabVIEW开发干扰对无线网络基础设施进行隐蔽影响测试
|
2天前
|
传感器 数据采集 监控
LabVIEW开发感应电机自动测试台
LabVIEW开发感应电机自动测试台

热门文章

最新文章