soapui + groovy 接口自动化测试 第八章

一波小团战!

 1.操作excel的groovy脚本

package pub

import jxl.*
import jxl.write.Label
import jxl.write.WritableWorkbook

class ExcelOperation {

	def xlsFile
	def workbook
	def writableWorkbook

	def ExcelOperation(){}
	//设置xlsFile文件路径
	def ExcelOperation(xlsFile){
		this.xlsFile = xlsFile
	}
	//初始化workbook
	def init(){
		workbook = Workbook.getWorkbook(new File(xlsFile))
		writableWorkbook =  Workbook.createWorkbook(new File(xlsFile ), workbook)
	}
	//关闭workbook流
	def close(){
		writableWorkbook.write()
		writableWorkbook.close()
		workbook.close()
	}
	//获取list环境
	def envlistGet(sheetName, projectName) {
		def list = []
		init()
		list = envlist(workbook, sheetName, projectName)
		close()
		return list
	}
	//获取map环境
	def envmapGet(sheetName, projectName) {
		def map = [:]
		init()
		map = envmap(workbook, sheetName, projectName)
		close()
		return map
	}
	//写入文件
	def cellWriteSet(sheetName, rowName, columnName, content){
		init()
		cellWrite(writableWorkbook, sheetName, rowName, columnName, content)
		close()
	}

	//获取测试环境*
	def envlist(Workbook workbook, sheetName, projectName) {
		def list = []
		Sheet sheet = workbook.getSheet(sheetName)
		Cell[] c1 = sheet.getColumn(0)
		Cell[] c2 = sheet.getColumn(1)
		def end
		c1.each {it ->
			if(it.getContents().contains(projectName)) {
				end = it.row
			}
		}
		for(i in 0..5){
			list[i] = c2[end].getContents()
			end--
		}
		return list
	}
	//获取测试环境
	def envmap(Workbook workbook, sheetName, projectName) {
		def map = [:]
		Sheet sheet = workbook.getSheet(sheetName)
		Cell[] c1 = sheet.getColumn(0)
		Cell[] c2 = sheet.getColumn(1)
		def end
		c1.each {it ->
			if(it.getContents().contains(projectName)){
				end = it.row
			}
		}
		for(i in 0..5) {
			map.put(c1[end].getContents(), c2[end].getContents())
			end--
		}
		return map
	}

	//写入测试结果
	def cellWrite(WritableWorkbook writableWorkbook, sheetName, rowName, columnName, content){

		Sheet sheet = writableWorkbook.getSheet(sheetName)
		if(sheet == null){
			sheet = writableWorkbook.createSheet(sheetName,2)
		}
		Cell[] c1 = sheet.getColumn(0)
		Cell[] c2 = sheet.getRow(0)
		def row, col
		c1.each {it ->
			if(it.getContents().equals(rowName)){
				row = it.row
			}
		}
		c2.each {it ->
			if(it.getContents().equals(columnName)){
				col = it.column
			}
		}
		sheet.addCell(new Label(col, row, content))
	}

}

这是个封装好的调用excel的类,主要看怎么读写excel,其他方面根据个人需要来修改

2.生成MD5的groovy脚本

package pub

import java.security.MessageDigest

class MD5 {

def MD5
//空的构造方法
def MD5(){}
//构造方法实现构造返回MD5值
def MD5(map, pwd) {
	String s = getMapString(map, pwd)
	String b = getMD5(s)
	MD5 = b.toLowerCase()
}
//将map按key排序,并取出value组成字符串
def getMapString(Map map, String pwd) {
	def tm = new TreeMap(map) //按mapkey排序
	StringBuffer sb = new StringBuffer()
	tm.each { key,value ->
		sb.append"$value"
	}
	sb.append(pwd)
	return sb.toString()
  }
//返回传入字符串的MD5值
def getMD5(String source) {
	MessageDigest md5 = MessageDigest.getInstance("MD5")
	md5.update(source.getBytes())  //将字节数组传递给md5
	byte[] digest = md5.digest()   //产生md5序列
	StringBuffer sb = new StringBuffer()
	digest.eachByte {
		sb.append(String.format("%02x", it & 0xff)) //将md5值转为16进制
	}
	return sb.toString()
  }
}

传入Map和pwd,然后将map按key排序,把map的value连接起来生成md5值返回

3.操作txt文本

package pub

import java.io.File

class Text {
	def writeFile(fileName, context) {
		def file = new File(fileName)
		if(!file.exists()) {
			file.createNewFile()
		}
		file.append(new Date().format(‘yyyy-MM-dd HH-mm-ss‘), ‘UTF-8‘)
		file.append(‘\n‘)
		file.append(context, ‘UTF-8‘)
		file.append(‘\n‘)
	}
}

 4.调用第三方jar包

soapui可以调用第三方jar包/.class/.groovy文件;

打开soapui中lib目录(我的SoapUI-Pro-5.1.2.exe目录为C:\Program Files (x86)\SmartBear\SoapUI-Pro-5.1.2\lib),可以看到这里有很多jar文件。将第三方jar(java.jar/groovy.jar)包放进去,将以上三个脚本打成pub.jar放入,调用方法如下:

在testCase中新建一个Groovy Script,然后输入如下代码:

import pub.Text

def text = new Text()

text.writeFile("D:\1.log", "test")

执行完成后可以看到在d盘下建立了一个1.log文件,并写入test;

5.调用第三方.class文件

将得到的java.jar文件解压得到.class文件,将解压出来的文件夹及.class文件放到${soapui}/bin/scripts(我的SoapUI-Pro-5.1.2.exe目录为C:\Program Files (x86)\SmartBear\SoapUI-Pro-5.1.2\bin\scripts)目录下,调用方法和.groovy文件一致

6.调用第三方.groovy文件

将如上第三个.groovy脚本放在pub文件夹下,拷贝到${soapui}/bin/scripts(我的SoapUI-Pro-5.1.2.exe目录为C:\Program Files (x86)\SmartBear\SoapUI-Pro-5.1.2\bin\scripts)目录下,调用方法如下:

import pub.Text //如果这么写报错则改成import scripts.pub.Text

def text = new Text()

text.writeFile("D:\1.log", "test")

执行完成后可以看到在d盘下建立了一个1.log文件,并写入test;

7.再谈调用第三方jar包!

打开${soapui}/bin/ext(我的SoapUI-Pro-5.1.2.exe目录为C:\Program Files (x86)\SmartBear\SoapUI-Pro-5.1.2\bin\ext)目录有个readme.txt写着一行鸟语,大致意思是这个文件夹是存放外部jar文件的位置;

建议所有的外部文件均放在这个文件夹底下,像.class/.groovy尽量打成jar包放在ext文件夹下;之所以如此建议,是基于如下原因:

1.有些安装的soapui bin目录下并没有scripts文件夹(linux下安装或免费版soapui),当然你要手动去创建的话和安装自动生成并无差别;

2.在Linux下运行外部文件存在于scripts文件夹下的脚本会报错;

3.官方对于ext文件夹的描述为,soapui启动时首先加载外部jar包的地方;

4.groovy脚本打包时要注意,使用eclipse打包时会让我们勾选生成.class文件,不要勾选此选项,就使用原版的.groovy文件(不然运行时会报错);简单来说这个打包就跟你用压缩工具压缩然后改后缀为.jar效果是一样的。

本章到此结束, 下章介绍使用soapui过程中遇到的问题。

时间: 2024-10-17 10:20:56

soapui + groovy 接口自动化测试 第八章的相关文章

soapui + groovy 接口自动化测试 第三章

本篇闲扯淡 第一次做接口测试是无意的,当时正在做性能测试,然后要先验一下功能通过否,就用lr脚本跑了一遍功能,就这样第一次没了: 第二次做接口测试时,领导说要自动化,然后我研究了selenium及windows客户端,再然后得知先做接口的(万变不离其宗嘛): 思虑良久用啥去做呢,首选抛弃了lr这绝壁不合适,简单的还行复杂的就GG了.然后祭出了我的java,先学习了段时间httpclient,就进行简单的请求编写了: 在编写过程中发现我们内部请求是要传加密字段的,然后就去请教我们开发了: 首先我们

soapui + groovy 接口自动化测试 第二章

虽然我不太喜欢写工具如何使用,但作为以后的铺垫不得不先描述工具能做什么: 1.soapui简介 SoapUI是一个自由和开放源码的跨平台功能测试解决方案.通过一个易于使用的图形界面和企业级功能,SOAPUI让您轻松,快速创建和执行自动化功能.回归.合规和负载测试.在一个测试环境,SOAPUI提供完整的测试覆盖,并支持所有的标准协议和技术. ---摘自百度百科 简单来说soapui就是能够做接口自动化及接口压力测试的工具 2.soapui版本 soapui分为soapui pro收费版及soapu

soapui + groovy 接口自动化测试 第五章

正式开始,敌军还有三十秒到达战场! 首选从创建项目开始 1.打开soapui,右键Projects-New Rest Projects-弹出框输入http://192.168.1.100/server?param=abc如下图: 点击OK 2.观察生成的soapui项目 http://192.168.1.100 :: 测试的地址 Server[/server]  :: Resource地址 GET Server :: http请求方法为GET(我们可以一个接口创建一个GET请求,而不是所有接口都

soapui + groovy 接口自动化测试 第四章

Groovy入门教程    ---纯摘抄 一.groovy是什么 简单地说,Groovy 是下一代的java语言,跟java一样,它也运行在 JVM 中. 作为跑在JVM中的另一种语言,groovy语法与 Java 语言的语法很相似.同时,Groovy 抛弃了java烦琐的文法.同样的语句,使用groovy能在最大限度上减少你的击键次数——这确实是“懒惰程序员们”的福音. 二.开发环境 1.  jdk 1.5以上 2.  eclipse+groovy plugin(支持Groovy 1.5.7)

soapUI+groovy 接口测试之部分groovy使用记录

1, 写入值(30,31),更新到数据表的多条记录. sqlStr = "select column_id from 1dcq_shop_column2  where shop_id = '"+ db_Shop_id + "'" def dbSettings=[] def db_sub_column_id ="" sqlResult = sql.eachRow(sqlStr) { dbSettings << it.toRowResul

手把手教你接口自动化测试 – SoapUI &amp; Groovy

阅读这篇文章需要一定的SoapUI基础,至少入过门,另外还需要一些Groovy的知识,当然如果你会java 也可以,这里用到的Groovy知识和Java很类似. 另外,本文的思路和我上一篇文章<零成本实现接口自动化测试 – Java+TestNG 测试Restful service>很相似,只不过把Java+TestNG的组合换成了SoapUI+Groovy, 另外测试对象也换成了基于Soap的web service, 依旧用Excel来管理数据,做到数据分离. 由于我用到的SoapUI是免费

转载:SoapUI之接口数据传递

SoapUI之接口数据传递(TestCase.TestSuite传递) SoapUI之接口数据传递(step传递) SoapUI+Groovy做接口自动化测试 SoapUI中使用Conditional Goto TestStep 摘要: How to use Conditional Goto TestStep instead of Groovy Script Background: 在SoapUI的TestStep中,Groovy Script可以实现大多数种类的测试场景,但是一个Project

SoapUI实践:自动化测试、压力测试、持续集成

因为项目的原因,前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api.下面将研究的成果展示给大家,希望对需要的人有所帮助. SoapUI 是什么? SoapUI 是一个开源测试工具,通过 soap/http 来检查.调用.实现 Web Service 的功能/负载/符合性测试.该工具既可作为一个单独的测试软件使用,也可利用插件集成到 Eclipse,maven2.X,Netbeans 和 intellij 中使用. SoapUI 的安装 下载地址,最好下载最新版本安装包,因为 So

接口自动化测试--基础篇

点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是我们期待的方向,有更多兴趣的欢迎切磋,我们微信订阅号,联系方式如下: 更多书籍,敬请期待 上次分享了http协议后,很多朋友问,做接口自动化测试如何入门,今天小怪简单分享介绍下,1.我们需要的的基础知识,2.Fiddler接口测试演示,3.jmeter接口测演示,详细如下: 视频地址:https:/