创建和扩展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. Django使用cropbox包来上传裁剪图片

    1.使用cropbox包来上传裁剪图片,可见介绍:https://www.jianshu.com/p/6c269f0b48c0I ImgCrop包包括:css--style.css,js--cropb ...

  2. Java 调用执行其他语言的程序

    以 Java 调用 Python 为例 1. 使用 Runtime 类 该方式简单,但是增加了 Java 对python 的依赖,需要事先安装python,及python程序依赖的第三方库 Runti ...

  3. [翻译]理解分析Linux里的101个ELF文件

    原文:https://linux-audit.com/elf-binaries-on-linux-understanding-and-analysis/

  4. Linux 平台 tcpdump 抓包

    一. 在ecs上准备好mysql客户端命令 二. 开启抓包,抓包方法如下:Linux 平台: 1. 打开一个到ECS的ssh连接,并以root身份登录.在该窗口运行下列命令tcpdump -i any ...

  5. 20175316 盛茂淞 MyCP(课下作业,必做)

    题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为 ...

  6. js生成tree形组织机构下拉框

    1.首先我们正常数据是如下所示: [ { id: 1, pid: 0, name: '公司组织' }, { id: 2, pid: 1, name: '总经办' }, { id: 3, pid: 1, ...

  7. appium:运行脚本时,报404的解决办法

    对于报404的错,不要怀疑,在环境正常的情况下,一定是你的端口被占用了. 就用:查看端口:netstat -aon|findstr 5037 查看进程:tasklist /fi "PID e ...

  8. ABAP 常见系统表

    TRDIRT Program nameTFTIT Function module nameDD02T Table name

  9. 基于SVG.js实现网页初始化线条描绘效果

    前端实现看到一个网页的效果很cool(参考https://tympanus.net/Development/SVGDrawingAnimation/index2.html),决定自己去实现以下这个效果 ...

  10. 更改了ssh文件下,还没有权限

    执行 cd /root/.ssh chmod 600 id_*