1. 程式人生 > >Robot Framework - 入門與操作(4)

Robot Framework - 入門與操作(4)

df -h process per 進程 。。 獲取 狀態 界面 value

練習:創建和擴展Library

示例:Check status on Linux OS

創建與使用library的基本步驟

1--- library實現的內容和實現的方式 2--- library的編寫:名稱、類別、引用的模塊、關鍵字、註釋等 3--- library的編譯調試方式、文檔生成、導入及確認。。。 4--- Test Case的編寫與調試 5--- 擴展已存在的測試庫的方式

1--- library實現的內容和方式

實現的內容: 以SSH方式登陸Linux系統,檢查CPU,Memory,Disk等使用狀態是否在期望的範圍內 實現的方式:
利用現有的SSHLibrary來實現SSH登陸Linux系統 創建相應關鍵字來實現單項的檢查,包含內容獲取、分析和判斷

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)