zoukankan      html  css  js  c++  java
  • 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 的测试库
     
  • 相关阅读:
    词频统计作业--第一次软工作业
    个人作业-《移山之道》读后感
    第一次作业
    个人阅读作业
    结对代码 互审意见
    电梯调度程序结对编程
    《代码大全2》阅读笔记
    Hibernate的事务处理机制和flush方法的用法
    dubbo&hsf&spring-cloud简单介绍
    Redis与Memcached的区别
  • 原文地址:https://www.cnblogs.com/anliven/p/10010299.html
Copyright © 2011-2022 走看看