创建和扩展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 - 创建和扩展测试库的示例的更多相关文章

  1. Robot Framework(5)- 使用测试库

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 在RF 测 ...

  2. Robot Framework(五)使用测试库

    使用测试库 测试库包含那些最低级别的关键字,通常称为 库关键字,实际上与被测系统交互.所有测试用例总是使用某些库中的关键字,通常是通过更高级别的用户关键字.本节介绍如何使用测试库以及如何使用它们提供的 ...

  3. Robot Framework(8)- Collections 测试库常用的关键字列表

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 所有关键字 ...

  4. Robot Framework(6)- BuiltIn 测试库常用的关键字列表

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 所有关键字 ...

  5. Robot Framework(7)- DateTime 测试库常用的关键字列表

    如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 前言 所有关键字 ...

  6. robot framework笔记(三):扩展SeleniumLibrary库 (自定义关键字)

    (一)自定义和浏览器相关的关键字 以下代码GitHub 版本库地址: https://github.com/blairwind/blog_rf SeleniumLibrary的扩展文档中提供了3种增加 ...

  7. Robot Framework - 2 - 创建测试库

    04- 创建测试库--基础概念 Robot Framework 实际的测试能力是由测试库提供的. ***** 支持的编程语言 Robot Framework 自身是用 Python 编写的,能使用 P ...

  8. RobotFramework自动化测试框架(3)- RobotFramework扩展测试库、资源文件、变量文件

    扩展测试库 扩展测试库可使用python或java语言编写.后直接导入需要使用的测试用例文件即可. 具体的实现和操作,后续补充.请参考官网. 资源文件 在资源文件中定义用户关键字,它提供了共享机制,即 ...

  9. Robot Framework - 5 - 创建测试数据

    Creating test data User Guide - Creating test data:http://robotframework.org/robotframework/latest/R ...

随机推荐

  1. new delate he typedef的含义

    new:        new 类型[初值] 如: new int ;                                     //开辟一个存放整数的存储空间,返回一个指向该存储空间的 ...

  2. AngularJS入门-demo

    双向绑定测试: <body ng-app> 请输入姓名:<input ng-model="myname"> <br> {{myname}},你好 ...

  3. 查看Chrome密码只需一段代码

    在Chrome浏览器的地址栏里输入“ chrome://chrome/settings/passwords ”,然后Chrome自动帮你保存的密码就会瞬间被曝露出来. 强调一下,只要不是在本机上输入以 ...

  4. HttpWebRequest.AddRange 支持long类型

    很久很久以前,在哪个FAT32格式还流行的年代,文件大小普遍还没超过4G的年代,.Net已经出来了. 而那时候.Net实现的HTTP断点续传协议,还没预料到如此普及(我猜的).那时候的HttpWebR ...

  5. ibatis中的resultMap

    优点: resultMap可以实现一种功能 当你是1对多 这种多张表查询的时候 你没办法 通过表连接来实现一个集合设置到一个实例里,但是通过resultMap里可以做到 根据关联的字段 查询到一个集合 ...

  6. Mac更改PHP默认目录

    在Mac上搭建了PHP服务器以后,默认的路径为/Library/WebServer/Documents下面,但这让人很不爽,我想修改到自己定义的路径下.经过好一番折腾,终于成功了. PHPEclips ...

  7. Transform(变换)—Y轴lable内容旋转

    <!DOCTYPE html> <html> <head> <style> div{ border:1px solid; } .bb{ position ...

  8. mysql 统计某个月每天的数据

    select SUM(order_money) as money,substr(t.pay_time,1,10) as time  from pay_log t where  t.pay_time l ...

  9. k8s1.13.3安装istio(helm方式)

    官方文档:https://istio.io/zh/docs/setup/kubernetes/install/helm/ 一.环境信息 centos7 k8s1.13.3 主机名 ip cpu ram ...

  10. 【MySql】启动/停止

    一.启动 1.查看启动命令所在目录 macdeMacBook-Pro:~ mac$ ps -ef|grep mysql 2.进入命令目录 macdeMacBook-Pro:~ mac$ cd /usr ...