zoukankan      html  css  js  c++  java
  • Robot Framework自动化测试(五)--- 开发系统关键字

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

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

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

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

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

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

     
     
  • 相关阅读:
    Windows 科研软件推荐
    有关Python 包 (package) 的基本知识
    《Using Python to Access Web Data》Week4 Programs that Surf the Web 课堂笔记
    Coursera助学金申请模板
    《Using Databases with Python》 Week2 Basic Structured Query Language 课堂笔记
    Jupyter 解决单个变量输出问题
    解决 pandas 中打印 DataFrame 行列显示不全的问题
    《Using Python to Access Web Data》 Week3 Networks and Sockets 课堂笔记
    缓存击穿及解决方案
    jvm垃圾收集器
  • 原文地址:https://www.cnblogs.com/zhangfeivip/p/10110807.html
Copyright © 2011-2022 走看看