1. 程式人生 > >Robot Framework自動化測試(五)--- 開發系統關鍵字

Robot Framework自動化測試(五)--- 開發系統關鍵字

封裝 cab 是不是 evaluate mission 目的 file dir return

最近一直在用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自動化測試(五)--- 開發系統關鍵字