一波小团战!

 1.操作excel的groovy脚本

package pubimport jxl.*
import jxl.write.Label
import jxl.write.WritableWorkbookclass ExcelOperation {def xlsFiledef workbookdef writableWorkbookdef ExcelOperation(){}//设置xlsFile文件路径def ExcelOperation(xlsFile){this.xlsFile = xlsFile}//初始化workbookdef 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 endc1.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 endc1.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, colc1.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 pubimport java.security.MessageDigestclass 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())  //将字节数组传递给md5byte[] 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 pubimport java.io.Fileclass 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过程中遇到的问题。

转载于:https://www.cnblogs.com/mayibanjiah/p/4555236.html

soapui + groovy 接口自动化测试 第八章相关推荐

  1. soapui oracle groovy,soapUI+groovy 接口测试之部分groovy使用记录

    1, 写入值(30,31),更新到数据表的多条记录. sqlStr ="select column_id from 1dcq_shop_column2  where shop_id = '& ...

  2. SoapUI接口自动化测试

    soapUI-可用来进行接口自动化测试,现在很多手机APP以及web项目会涉及到接口的调用,特别是如果调用的接口数量很多时,接口回归测试时工作量就很大,此时就可以通过soapUI工具在测试前期根据接口 ...

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

    因为项目的原因,前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api.下面将研究的成果展示给大家,希望对需要的人有所帮助. SoapUI 是什么? SoapUI 是一个开源测试工具,通过 ...

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

    因为项目的原因,前段时间研究并使用了 SoapUI 测试工具进行自测开发的 api.下面将研究的成果展示给大家,希望对需要的人有所帮助. SoapUI 是什么? SoapUI 是一个开源测试工具,通过 ...

  5. 如何选择接口自动化测试工具

    当你准备给自己所负责的项目搭建接口自动化测试时,面对市面上多种多样的工具或者框架,是否遇到不知该选哪个工具的困惑?本片文章通过对时下使用广泛的接口自动化工具进行对比来介绍自动化工具或者框架选择策略,协 ...

  6. python接口测试_Python接口自动化测试框架实战开发(一)

    目录 一丶叙述 二丶接口基础知识 三丶接口测试工具 四丶Fiddler的使用 五丶unittest使用 六丶mock服务入门到实战 七丶接口自动化框架设计到开发 一丶叙述 1.项目介绍 整个项目分为四 ...

  7. 2018-04-22接口自动化测试学习心得(1)

    根据接口文档写接口测试用例-->添加接口自动化测试项目相关依赖(httpclient+testng+poi-ooxml+log4j+mail+mysql-connector-java)--> ...

  8. java脚本接口自动化测试_接口自动化测试实践的记录

    接口测试实践的记录 在敏捷开发交付的流程中,自动化测试实际上被放在一个看起来挺重要的位置,而自动化测试中,接口测试是一个投入产出比比较高的 一种自动化测试的形式,而我自己也做了一个这样的脚手架一样的东 ...

  9. jemeter python接口自动化测试平台_WEB接口开发与自动化测试基于PYTHON语言PDF_Python教程...

    资源名称:WEB接口开发与自动化测试 基于PYTHON语言 PDF 内容简介: <Web接口开发与自动化测试--基于Python语言>以接口测试为主线,以Web开发为切入点,全面介绍了We ...

最新文章

  1. hitTest和pointInside方法
  2. 元学习(meta learning) 最新进展综述论文,28页pdf
  3. 雷林鹏分享:PHP 5 时区
  4. vue怎么取消按回车下拉框自动下拉_八月更新第二版,小视频自动竖屏全屏播放,失效校验再次升级!...
  5. 用rate-limit来限制特定用户的流量
  6. getpeername函数与getsockname函数的介绍
  7. 事务例子_Redis事务系列之一Redis事务详解
  8. 这才是真正的Git——Git内部原理揭秘!
  9. CABasicAnimation 按home键后台之后,再切回来动画就停止
  10. 计算机硬盘中没有设控制器,电脑设置硬盘为兼容模式
  11. 对九个超级程序员的采访
  12. ie浏览器样式兼容写法_浏览器兼容性以及写法
  13. ffmpeg 给视频添加字幕,在视频的某个时间段加入声音特效和动画
  14. 你一念之差,我动情一场:伤感日志
  15. 编译报错:needed by ‘out/target/product/XXX.apk.....
  16. SQL+Tableau化妆品数据分析
  17. java web 常见框架
  18. F607Za光猫设置拨号及相关技术
  19. Phonics 自然拼读法 ar er ir ur or 元音字母组合 Teacher:Lamb
  20. 危害网络计算机安全罪判刑几年,帮助信息网络犯罪活动行为涉嫌成立犯罪的一般判刑多少年...

热门文章

  1. linux下查询端口,进程的状态以及netstat的参数意义
  2. 每天一个linux命令(2):cd命令
  3. docker日志位置
  4. python【数据结构与算法】最长公共子串详解(附代码)
  5. 【Deep Learning笔记】感知机模型和学习策略
  6. 【最小费用最大流】Going Home
  7. mac系统学习和快捷键
  8. 网络推广软件介绍外链坚持七大原则助力网站排名“蹭蹭上涨”!
  9. 浅析企业网站建设的基本费用组成
  10. java+caching+system_浅谈Spring boot cache使用和原理