练习:创建和扩展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