Robot Framework - 入門與操作(4)
阿新 • • 發佈:2018-11-24
df -h process per 進程 。。 獲取 狀態 界面 value
利用現有的SSHLibrary來實現SSH登陸Linux系統
創建相應關鍵字來實現單項的檢查,包含內容獲取、分析和判斷
練習:創建和擴展Library
示例:Check status on Linux OS
創建與使用library的基本步驟:
1--- library實現的內容和實現的方式 2--- library的編寫:名稱、類別、引用的模塊、關鍵字、註釋等 3--- library的編譯調試方式、文檔生成、導入及確認。。。 4--- Test Case的編寫與調試 5--- 擴展已存在的測試庫的方式1--- library實現的內容和方式
實現的內容: 以SSH方式登陸Linux系統,檢查CPU,Memory,Disk等使用狀態是否在期望的範圍內 實現的方式:2--- library的編寫
名稱、類別、引用的模塊、關鍵字、註釋等 名稱:LibraryCheckLinuxOS.py 類別:靜態庫 引用的模塊:SSH Library、re 關鍵字:為每一個獨立檢查項建立靜態關鍵字 註釋:添加Library說明及關鍵字的使用方法 。。。。。。# -*- coding: utf-8 -*- import re from SSHLibrary import SSHLibrary class LibraryCheckLinuxOS: """This is an example for creating a library .""" ROBOT_LIBRARY_SCOPE = ‘TEST SUITE‘ #測試庫的範圍 __version__ = ‘0.1‘ #聲明測試庫的版本 def creat_ssh_connection(self,ipaddress,port,user,login): ‘‘‘ 根據輸入的IP、端口、用戶名及密碼,建立相應的SSH連接. Example : | creat ssh connection | 10.68.75.111 | 22 | mcadmin | testsc | ‘‘‘ self.mc = SSHLibrary() self.mc.open_connection(ipaddress,port) self.mc.login(user,login) def check_disk(self,quota=80): ‘‘‘ 檢查磁盤的空間是否滿足特定的要求。默認已使用空間要求小於80%. Example : | check disk | 80 | ‘‘‘ self.mc.start_command("df -h") diskstatus = self.mc.read_command_output() match_one = re.findall(r"\d+\%",diskstatus,re.M) match_two = ‘ ‘.join(match_one) matchobj = re.findall(r"\d+",match_two) if int(max(matchobj)) < int(quota): print "The disk status is OK !" else: raise UserWarning("There‘s something wrong with your disk.") def check_rpm(self,rpmname): ‘‘‘ 檢查特定的安裝包是否安裝. Example: | check rpm | name | ‘‘‘ self.mc.start_command("rpm -qa|grep %s" % rpmname) checkstatus = self.mc.read_command_output() if checkstatus == rpmname: print "The %s is installed !" % rpmname else: raise UserWarning("There‘s something wrong with your rpm.") def check_service(self,servicename): ‘‘‘ 檢查特定服務的狀態. Example: | check service | name | ‘‘‘ self.mc.start_command("service %s status" % servicename) checkstatus = self.mc.read_command_output() match = re.findall(r"running",checkstatus,re.M) if len(match) > 0: print "The service status is OK !" else: raise UserWarning("The service status is not running.") def check_process(self,processname): ‘‘‘ 檢查特定進程的狀態. Example: | check process | name | ‘‘‘ self.mc.start_command("ps -ef | grep %s" % processname) checkstatus = self.mc.read_command_output() match = re.findall(r"%s" % processname,checkstatus,re.M) if len(match) >= 2 : print "The process status is OK !" else: raise UserWarning("The %s is not running." % processname) def check_memory(self,value=80): ‘‘‘ 檢查內存的使用狀態. Example: | check memory | value | ‘‘‘ self.mc.start_command("free -m") checkstatus = self.mc.read_command_output() match = re.findall(r"\d+",checkstatus,re.M) quota =(float(match[1])/float(match[0]))*100 if int(quota) <= int(value): print "The memory is OK !" else: raise UserWarning("Please check the status of memory" ) ##from SSHLibrary import SSHLibrary ## ## def check_memory(self,ipaddress,user,login): ## mc = SSHLibrary() ## mc.open_connection(ipaddress) ## mc.login(user,login) ## mc.start_command(‘free -m‘) ## return mc.read_command_output() ##class LibraryCheckLinuxOS: ## ## ROBOT_LIBRARY_SCOPE = ‘TEST SUITE‘ #測試庫的範圍 ## __version__ = ‘0.1‘ #聲明測試庫的版本 ## ## def creat_ssh_connection(self,ipaddress,port,user,login): ## self.mc = SSHLibrary() ## self.mc.open_connection(ipaddress,port) ## self.mc.login(user,login) ## ## def check_loadavg(self): ## self.mc.start_command(‘cat /proc/loadavg‘) ## print self.mc.read_command_output() ## ## def check_memory(self): ## self.mc.start_command(‘free -m‘) ## print self.mc.read_command_output() ## ## def check_disk(self): ## self.mc.start_command(‘df -h‘) ## print self.mc.read_command_output() ## 檢查Linux OS的磁盤空間 ## $ df -h ## Filesystem Size Used Avail Use% Mounted on ## /dev/mapper/VG00-sysimg ## 19G 2.7G 16G 15% / ## /dev/sda1 99M 19M 75M 21% /boot ## tmpfs 2.0G 20K 2.0G 1% /dev/shm ## /dev/mapper/vg01-mmsc_var ## 35G 435M 33G 2% /var/mnt/mmsc_var ## /dev/mapper/vg03-ldap ## 985M 114M 821M 13% /var/mnt/local/ldap ## /dev/mapper/vg02-clusterlvol.001 ## 2.0G 37M 1.8G 2% /var/mnt/cluster_lvol ## 檢查Linux OS的內存狀態 ## $ free -m ## total used free shared buffers cached ## Mem: 3949 1911 2037 0 336 1245 ## -/+ buffers/cache: 329 3619 ## Swap: 0 0 0 ## 檢查Linux OS是否安裝了特定的程序包 ## $ rpm -qa |grep SS_MMSC-5.0.6 ## SS_MMSC-5.0.6-30 ## 檢查Linux OS特定進程的狀態 ## # ps -ef |grep xkrmanmx ## mcadmin 19215 19200 1 11:16 ? 00:00:05 xkrmanmx ## root 21723 17643 0 11:24 pts/0 00:00:00 grep xkrmanmx
實現如下功能:
- 檢查Linux OS是否安裝了特定的程序包
- 檢查Linux OS特定的服務啟動狀態
- 檢查Linux OS特定進程的狀態
- 檢查Linux OS內存使用狀態
3--- library的編譯
調試方式、文檔生成、導入及確認。。。 調試方式:使用 Robot Framework 本身來驗證測試庫。 文檔生成:CMD界面下,在同一目錄執行“python -m robot.libdoc LibraryCheckLinuxOS LibraryCheckLinuxOS.html” 導入及確認:與測試文件放在同一目錄,直接導入,使用F5快捷鍵方式確認關鍵字內容。 。。。。。。4 --- Test Case的編寫與調試
5 --- 擴展已存在的測試庫的方式
因現有的library代碼結構簡單,實現功能雷同單一,並且不需要重新打包。 所以采用直接修改其源代碼的方式,添加相應關鍵字。 其他的擴展方法: *** 使用繼承來擴展一個已存在的庫。 *** 直接使用其他測試庫 *** 從 Robot Framework 中獲取活動的測試庫實例 *** 使用動態庫或者混合庫 API 的測試庫Robot Framework - 入門與操作(4)