转载自:https://www.jianshu.com/p/7c672426a165

一. 背景:

调用接口时有个请求参数是对请求入参按一定规则进行加密生成的验签值,每次不同参数的请求生成唯一的验签值,验签值不对,接口会报相应的错误。

二. 解决方案:
  • 代码写死账号,写死的账号不走验证逻辑
  • 调用接口之前,按照加密规则生成一样的验签值

三. 下面用soapui工具进行接口测试生成正确验签值的示例:

  1. 参数化请求参数(DataSource)
  2. 使用groovy脚本调用java加密的jar包生成正确的验签值 (Groovy Script)
  3. 调用接口 (HTTP)
  4. 校验输出是否正确 (Groovy Script 或者 Assertion TestStep)
  5. 将需要的数据输出 (DataSink)
  6. 循环参数化的参数进行不同参数的接口测试 (DataSoure Loop)
  7. 执行所有参数请求
1.参数化请求参数

1.1 新建DataSource步骤

 
 

1.2 准备excle参数化数据

 
 

1.3 添加参数化文件,并且加上后续接口调用需要的字段名(最好和请求参数保持一致)

 

1.4 选择需要的参数行数

 
2.Groovy 脚本

2.1 添加Groovy Script脚本步骤

 

2.2 将java加密jar包放在soapui安装目录下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\ext

 
 

2.3 写groovy脚本调用java加密jar包生成一样的验签值,放在soapui的安装目录下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\scripts下
将公用的脚本均可放在次目录下,供soapui直接调用

 
 
 

2.4 soapui里面的groovy脚本调用公用的scripts里面的脚本按不同请求生成正确的sign值

 
 
 
  1. //调用公用加密方法
  2. def myMd5 = new MD5()
  3. def key = "AAAAAAAAAAAAA"
  4. //传参
  5. def mapMd5 = [:]
  6. mapMd5 = [
  7. 'service':context.expand( '${DataSource#service_name}' ),
  8. 'version':context.expand( '${DataSource#version}' ),
  9. 'AAA':context.expand( '${DataSource#AAA}' ),
  10. ]
  11. //取DataSource的参数值
  12. def myDatasource =  testRunner.testCase.testSteps["DataSource"]
  13. //MD5加密  Start
  14. def output = myMd5.getMapString(mapMd5,key)
  15. log.info "output: " + output
  16. def sign = myMd5.getMD5(output)
  17. log.info "sign: " + sign
  18. //MD5加密  End
  19. testRunner.testCase.testSteps["HTTP"].setPropertyValue("sign",sign)
3.HTTP接口的sign值被上个步骤设置,调取接口
 
 

4. 校验参数是否正确,自己根据需求进行校验
5. 将需要的参数输出
 
6. 设置循环的参数和接口
 
 
7. 执行数据源里面的接口,进行自动化测试
 

--------------至此,整个接口就可以顺利自动化调取了和校验了----------------

SoapUI接口测试-验签值处理-调用java的加密jar包的更多相关文章

  1. Jmeter用BeanShell Sampler调用java写的jar包进行MD5加密

    [前言] 在工作中,有时候我们请求的参数可能需要加密,比如登录接口中的密码做了加密操作,今天我就给大家介绍一种方法:Jmeter用BeanShell Sampler调用java写的jar包进行MD5加 ...

  2. C#调用java类、jar包方法(转)

    一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录下的所有class文件夹全部进行打包处理: 使用的命令:jar cvf test.jar -C com/ . 其中tes ...

  3. C#调用java类、jar包方法

    一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录下的所有class文件夹全部进行打包处理: 使用的命令:jar cvf test.jar -C com/ . 其中tes ...

  4. 在C#中调用Java生成的jar包文件的方法

    C#工程调用Java已生成的jar包步骤如下: 一.使用IKVM.NET组件 首先到IKVM官网(http://www.ikvm.net)下载组件,下载地址:https://sourceforge.n ...

  5. 【转】C#调用java类、jar包方法

    原文地址:http://blog.csdn.net/black0707/article/details/5769366 一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录 ...

  6. java项目打jar包的两种情况

    链接地址:http://jingyan.baidu.com/article/6b97984d8a6ddc1ca2b0bfa0.html 本文介绍一下java项目打jar包时的两种情况各怎么操作   方 ...

  7. IntelliJ IDEA导出Java 可执行Jar包

    原文:IntelliJ IDEA导出Java 可执行Jar包 保证自己的Java代码是没有问题的,在IDEA里面是可以正常运行的,然后,按下面步骤: 打开File -> Project Stru ...

  8. eclipse生成【带有外部jar包】的java可执行jar包

    之前有写过一篇使用eclipse生成java可执行jar包,但是最近的一次使用中无论如何都不成功,当双击执行打成的jar时,弹出如下错误: could not find the main class: ...

  9. java反射查看jar包中所有的类名方法名

    不反编译,不用其他工具,用java反射查看jar包中所有的类名方法名,网上很多都报错,下面这个你试试看:话不多说直接撸代码: import java.lang.reflect.Field; impor ...

随机推荐

  1. web开发中 代码解决部分IE兼容问题

    首先是自己遇到问题: 一套系统,以前的开发asp旧+c#新后台管理扩展.完善后,在2013年前基本无问题,很是畅顺. 其中.到升级了浏览器后.例如ie9以后,则问题出现了. 如图:   这是一个js的 ...

  2. JDBC学习DayOne

    一.相关概念 1.JDBC的定义 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它 ...

  3. vscode里使用.vue代码模板的方法

    1.设置.vue模板 打开编辑器,点击文件 —— 首选项 —— 用户代码片段,会弹出来一个输入框. 在输入框输入vue,回车,会打开一个vue.json文件. 在里面复制以下代码: { "P ...

  4. 选择排序<C#>

    目标:对数组(列表等任意有序容器)进行排序 方法:对列表进行遍历,选出最大的   之后将这个数储存起来,对剩下的数再选择最大的,之后再对剩下数做同样的操作 直至结束即可.   代码如下: public ...

  5. Linux:Gentoo系统的安装笔记(一)

    这次我选择安装Gentoo,用来做我学习的笔记.这次我是使用虚拟机安装Gentoo,一是方便操作,二是可以看着手册,一边看一边操作,严格按照手册上的步骤执行,一般是不会出现问题的. 查看手册最好学会看 ...

  6. jmeter下载和配置

    一.下载 1.进入官网:http://jmeter.apache.org/ 3.环境变量相关配置 电脑桌面---->“计算机”图标---->鼠标右键选择“属性”---->点击高级系统 ...

  7. centos 6.5 下 nginx 简单优化_虚拟主机_负载均衡

    # 用了nginx for win很久,安装也是超级简单.# 还是用一下linux版的吧.环境是centos 6.5 x64 # 安装开始: # 先安装依赖 yum install gcc-c++ y ...

  8. LimeSDR 无线信号重放攻击和逆向分析

    原文链接:https://mp.weixin.qq.com/s/TBYKZR3n3ADo4oDkaDUeIA

  9. WEB学习笔记9-添加必要的<meta>标签

    <meta>标签放置在HTML页面的head中,主要用于标示网站.其中主要包含网站的一些描述信息,如简介,作者等.这些信息有助于搜索引擎更准确地识别网页的内容,也有助于第三方工具抓取网站基 ...

  10. react初学之render返回加括号的问题

    刚在学习react的初始阶段,跑了一段代码 var  Mydom = React.createClass({ render:function(){ return <div> <inp ...