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 還有毛用”。測試工具早前面對的就是一群不會編程的人好吧。錄制也早不是什麽新鮮的技術了好吧。都能錄制了,想想我們是不是早該下崗了。很多時候錄制並不是萬能,所以才有高級測試人才的生存與發展空間。如果有一天你只會錄制,想想離下崗也不遠了。因為新招來的任勞任怨還不嫌工資低。
Robot Framework自動化測試(五)--- 開發系統關鍵字