在soapui上踩过的坑

简介:

资料来自网络


1.新建一个DataSource,选择Excel(需要Excel2003格式),选择行号,设置起始行结束行,设置规则,trim

2.在返回结果的outline中,可以直接选定一个记录进行transfer to 另一个step的参数

3.DataSource循环设置:插入一个DataSource loop步骤,设置循环的数据源和执行步骤

4.插入验证点:选择步骤,选择结果为response,选择preporety contends ,选择message contents assertion 不能动态去从Excel中去取,如果loop中含有非标内容,需要用脚本断

5.用脚本断言方法:post页面,点击地址栏左侧的增加断言的按钮,然后选择Script,打开脚本编辑页面,在页面中getdata,从response中获得对应的值,从DataSource中获得对应的值,用assert 变量.equels(exp)来断言,这样就可以用DataSourceloop功能了。

6.DataSource中,单击扳手符号,在打开的对话框中可以选择Trims datavalue,对参数去空格处理

7.testcase详情页面,点击扳手,可以选择fail tast cast on error ,勾选为出错此用例不继续执行;

8.groovy的最后一个调用的方法的返回值,就是当前groovy脚本的返回值,在另外的step中,可以直接使用其return xx来接收返回值作为参数;

9.eclipsegroovy插件 :http://dist.springsource.org/release/GRECLIPSE/e4.3/

10.[错误:参见37]关于可选的的参数,需要用两个用例,在加密的时候使用,在参数化的时候去掉可选参数:

11.loadtest 可以做简单的性能测试

12.在左侧的row窗口中,可以查看到完整的拼装之后的post的请求url

如果一个返回的row中含有多个Set-Cookie

//获取登录的token值,

def cookiesList = testRunner.testCase.getTestStepByName("DoLogin.html").testRequest.response.responseHeaders["Set-Cookie"]

def cookieSessionKey

def cookieSessionKeyValue

for (i=0;i<cookiesList.size();i++){

        cookieSessionKey = cookiesList.get(i).split(";")[0];

        cookieSessionKeyValue= cookieSessionKey.split("=")[0];

        if (cookieSessionKeyValue == "JSESSIONID"){           

                 log.info "cookie : "+cookieSessionKey.split("=")[1]

                return cookieSessionKey.split("=")[1]

            }

}

13.数据源相对路径设置选中一个项目,在项目的下方有一个workspace properties,设置其中的project root${workspaceDir},在脚本中就可以使用作为相对路径

14.设置脚本模板:在soapui左上角点击扳手图标,在弹出框中可以设置脚本模板code templates

15.新建rest的时候,可以从接口文档的事例中通过例子去导入参数,左上角第三个按钮,可以通过special url来更新参数

16.同一个endpoint的多个请求,可以在一个请求下面new resource,这样可以把多个请求放在一起,不用再根节节点新建多个请求

17.选中project testsuites ,选项卡中可以选择执行的用例。

18.在用例上右键可以选择enable用例,这样在执行的时候,就可以跳过此用例

19.remove掉测试工程不会真删

20.测试环境地址改变,可以直接在链接的详情页面,打开service EndPoints选项卡,直接修改地址

21.coverage /?此处需要详细了解一下。

27.Mock Service:基于标准的WSDLXSD文件即可以进行。在MockSericeReponse产生后可以自行修改Response返回的内容。完成后对MockService进行启动,并挂接到已有的Request上面即可以开始模拟操作。可以将MockService模拟服务发布为一个WAR包,即将WAR包引入到JAVA项目中后完全就可以作为服务模拟端使用,基本不用再独立开发服务模拟端的代码。(Mock的工程上右键,可以deploy as war 即可)

28.模拟接口按条件返回:http://www.cnblogs.com/zerotest/p/4670005.html  

参数规则:${参数名}

脚本中使用context.setProperty( "参数名", Math.random()) //返回一个随机数

29.通过webservice地址获得wsdl文件:给定的地址一般分为以下两种:

第一,http://……/WapInterface;我们可以通过在其后加.wsdlhttp://……/WapInterface?wsdl)获取wsdl内容,通过另存为.wsdl即可获取wsdl文件。

第二,http://……//GovOnline.asmx;我们使用同样的方法http://……//GovOnline.asmx?wsdl即可方便的得到wsdl文件。

拷贝页面内容后,在首行加上:<?xml version="1.0" encoding="UTF-8"?> ,保存为wsdl文件即可

30.REST请求的Mock,新建一个REST请求,设置请求方式POST/GET,在响应中选择json,编辑生成的json

31 mockservice中有乱码问题,在返回的参数设置中,econding设置为UTF-8即可

32 sqlmap注入

33.修改endpoint:打开request,在service endpoint选项卡中,添加一个endpoint,点击Assign,可以弹出批量修改的节点类型,也可以在TestStep中去修改单个节点的endpoint

34mockservice脚本返回对应的response:mockservices下选择dispatch的方式为script

// Match based on query parameter

def queryString = mockRequest.getRequest().getQueryString()

log.info "QueryString: " + queryString

if( queryString.contains("1612121459580001") )

{

    // return the name of the response you want to dispatch

    return "Response 1"

}

else if( queryString.contains("1612121459580002") )

{

    // return the name of the response you want to dispatch

    return "Response 2"

}

35.JDBCrequest:可以用于数据库验证  ,可以用建立参数表,用参数传递的方式来做数据库验证

36.testrunner访问层级关系:testRunner.testCase.testSuite.project.testSuites[testSuiteName].testCases[testCaseName].testSteps[testStepName]

37.参数为空的时候,如果需要把参数名带入url中,可以在原始请求request的参数列表中,选中参数,勾选set if parameter is required,保存即可。

38.出错继续执行:双击testcase在上方的扳手处,打开对话框,找到about on erroruncheck Abort on Error

39.datagan常用的数据

40.DataSource loop 只要是数据源和loop step之间的step都不会被loop,可以用一个脚本来调用其他脚本,然后把被调用的脚本disable掉。

41.步骤之间的跳转可以通过testRunner.gotoStepByName( "token")来进行

42.condition goto 参考:http://www.w3school.com.cn/xpath/index.asp

A.用的是xpath的语法

B.选取节点后,直接通过 去比较,即通过返回值设定跳转

43.多个step循环,可以通过一个groovy脚本中testRunner.runTestStepByName("stepname"),把要循环的step都设置成disable,即可

44.数据传输方式:fromparam,URLparam,bodyparam,form格式的,直接在后方增加参数即可,bodyurl需要选择传输方式为post,然后在auth中,编辑传输文本,参考:http://blog.csdn.net/xiaojianpitt/article/details/6856536



本文转自 32氪 51CTO博客,原文链接:http://blog.51cto.com/10672221/1898468
相关文章
|
2月前
|
前端开发 Java 程序员
Eolink神技之四、IDEA工具插件Eolink ApiKit
Eolink神技之四、IDEA工具插件Eolink ApiKit
59 0
|
10月前
|
前端开发 JavaScript Java
SpringBoot 生成接口文档,老鸟也被打脸了!(文末福利)
SpringBoot 生成接口文档,老鸟也被打脸了!(文末福利)
590 2
|
11月前
|
Web App开发 测试技术 文件存储
干掉PostMan!IDEA这款插件太实用了…
接口调试是每个软件开发从业者必不可少的一项技能,一个项目的的完成,可能接口测试调试的时间比真正开发写代码的时间还要多,几乎是每个开发的日常工作项。所谓工欲善其事必先利其器,在没有尝到IDEA REST真香之前,postman(chrome的一款插件)确实是一个非常不错的选择,具有完备的REST Client功能和请求历史记录功能。但是当使用了IDEA REST之后,postman就可以丢了,因为,IDEA REST Client具有postman的所有功能,而且还有postman没有的功能,继续往下看。
|
11月前
|
Java 数据库 数据安全/隐私保护
推荐一款 IDEA 生成代码神器,写代码再也不用加班了!
Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大。
|
存储 JSON 程序员
好用到爆!IDEA 版 Postman 面世了,功能真心强大
IDEA是最常用的开发工具,很多程序员都想把它打造成一站式开发平台,于是安装了各种各样的插件。最近发现了一款IDEA插件RestfulFastRequest,细节做的真心不错,说它是IDEA版的Postman也不为过,推荐给大家!
|
Java Linux 开发者
撸个反向代理工具,搞一搞JRebel
前言 本地反向代理 服务器反向代理【个人推荐】 IDEA安装JRebel并激活 服务器安装JRebel并激活
|
程序员 C++ Python
730.离线安装selenium过程中踩的三个大坑
730.离线安装selenium过程中踩的三个大坑
|
JSON 数据可视化 前端开发
【开发神器】自动化测试、用 Apipost!
【开发神器】自动化测试、用 Apipost!
【开发神器】自动化测试、用 Apipost!
|
JSON 前端开发 JavaScript
中文版Postman?功能真心强大!
根据接口模型定义,自动生成各种语言/框架(如 TypeScript、Java、Go、Swift、ObjectiveC、Kotlin、Dart、C++、C#、Rust 等)的业务代码(如 Model、Controller、单元测试代码等)和接口请求代码。目前 Apifox 支持 130 种语言及框架的代码自动生成。 更重要的是:你可以通过自定义代码模板来生成符合自己团队的架构规范的代码,满足各种个性化的需求。
|
移动开发 前端开发 Android开发
【建议收藏】90%的前端都会踩的坑,你中了吗?(上)
移动开发时代,前端同学刚刚送别了让人头秃的IE浏览器,却发现憧憬已久的移动互联网时代并不是想象中那般美好。各种棘手的系统兼容问题和浏览器兼容问题怎么也让人高兴不起来。作为一名工作不足3年的前端程序媛,始终相信好记性不如烂笔头。每次在项目开发过程中踩到的坑,都习惯性地记录了下来。昨日一瞥竟积少成多,稍感诧异。因此分享出来,希望对大家能有所帮助。