Robot Framework

创建和扩展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 的测试库
 
原文地址:https://www.cnblogs.com/anliven/p/10010299.html