SoapUI接口测试-验签值处理-调用java的加密jar包
转载自:https://www.jianshu.com/p/7c672426a165
一. 背景:
调用接口时有个请求参数是对请求入参按一定规则进行加密生成的验签值,每次不同参数的请求生成唯一的验签值,验签值不对,接口会报相应的错误。
二. 解决方案:
- 代码写死账号,写死的账号不走验证逻辑
- 调用接口之前,按照加密规则生成一样的验签值
三. 下面用soapui工具进行接口测试生成正确验签值的示例:
- 参数化请求参数(DataSource)
- 使用groovy脚本调用java加密的jar包生成正确的验签值 (Groovy Script)
- 调用接口 (HTTP)
- 校验输出是否正确 (Groovy Script 或者 Assertion TestStep)
- 将需要的数据输出 (DataSink)
- 循环参数化的参数进行不同参数的接口测试 (DataSoure Loop)
- 执行所有参数请求
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值
- //调用公用加密方法
- def myMd5 = new MD5()
- def key = "AAAAAAAAAAAAA"
- //传参
- def mapMd5 = [:]
- mapMd5 = [
- 'service':context.expand( '${DataSource#service_name}' ),
- 'version':context.expand( '${DataSource#version}' ),
- 'AAA':context.expand( '${DataSource#AAA}' ),
- ]
- //取DataSource的参数值
- def myDatasource = testRunner.testCase.testSteps["DataSource"]
- //MD5加密 Start
- def output = myMd5.getMapString(mapMd5,key)
- log.info "output: " + output
- def sign = myMd5.getMD5(output)
- log.info "sign: " + sign
- //MD5加密 End
- testRunner.testCase.testSteps["HTTP"].setPropertyValue("sign",sign)
3.HTTP接口的sign值被上个步骤设置,调取接口
4. 校验参数是否正确,自己根据需求进行校验
5. 将需要的参数输出
6. 设置循环的参数和接口
7. 执行数据源里面的接口,进行自动化测试
--------------至此,整个接口就可以顺利自动化调取了和校验了----------------
SoapUI接口测试-验签值处理-调用java的加密jar包的更多相关文章
- Jmeter用BeanShell Sampler调用java写的jar包进行MD5加密
[前言] 在工作中,有时候我们请求的参数可能需要加密,比如登录接口中的密码做了加密操作,今天我就给大家介绍一种方法:Jmeter用BeanShell Sampler调用java写的jar包进行MD5加 ...
- C#调用java类、jar包方法(转)
一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录下的所有class文件夹全部进行打包处理: 使用的命令:jar cvf test.jar -C com/ . 其中tes ...
- C#调用java类、jar包方法
一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录下的所有class文件夹全部进行打包处理: 使用的命令:jar cvf test.jar -C com/ . 其中tes ...
- 在C#中调用Java生成的jar包文件的方法
C#工程调用Java已生成的jar包步骤如下: 一.使用IKVM.NET组件 首先到IKVM官网(http://www.ikvm.net)下载组件,下载地址:https://sourceforge.n ...
- 【转】C#调用java类、jar包方法
原文地址:http://blog.csdn.net/black0707/article/details/5769366 一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录 ...
- java项目打jar包的两种情况
链接地址:http://jingyan.baidu.com/article/6b97984d8a6ddc1ca2b0bfa0.html 本文介绍一下java项目打jar包时的两种情况各怎么操作 方 ...
- IntelliJ IDEA导出Java 可执行Jar包
原文:IntelliJ IDEA导出Java 可执行Jar包 保证自己的Java代码是没有问题的,在IDEA里面是可以正常运行的,然后,按下面步骤: 打开File -> Project Stru ...
- eclipse生成【带有外部jar包】的java可执行jar包
之前有写过一篇使用eclipse生成java可执行jar包,但是最近的一次使用中无论如何都不成功,当双击执行打成的jar时,弹出如下错误: could not find the main class: ...
- java反射查看jar包中所有的类名方法名
不反编译,不用其他工具,用java反射查看jar包中所有的类名方法名,网上很多都报错,下面这个你试试看:话不多说直接撸代码: import java.lang.reflect.Field; impor ...
随机推荐
- change事件同一文件多次选中
最近在做图片上传的时候,碰到了一点问题,那就是选择内容相同,change事件执行不了 网上搜索了答案,使用off('change')好像也不行 最终找到一种解决办法 使用replaceWith重置in ...
- Apache配置对外访问默认路径(域名默认访问路径)
摘抄.同以下博主遇到同样问题,故此记录. 作者:ChasingdreamLY 原文:https://blog.csdn.net/qq_26591517/article/details/80414073 ...
- Leetcode 600 不含连续1的非负整数
给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数. 例如: 输入: 5 输出: 5 解释: 下面是带有相应二进制表示的非负整数<= 5: 0 : 0 1 ...
- Nim函数调用的几种形式
Nim函数调用的几种形式 Nim 转载条件:如果你需要转载本文,你需要做到完整转载本文所有的内容,不得删改文内的作者名字与链接.否则拒绝转载. 关于nim的例行介绍: Nim 是一门静态编译型的系统级 ...
- Liunx find/locate/whereis/which 总结
一.locate 命令 是一个文件查找命令,命令所属软件包 mlocate 不同于 find 命令的是,find命令在整块磁盘中搜索:而 locate命令 在数据路库文件中搜索,当天创建的文件第二天才 ...
- 用6个案例说明如何恢复PXC集群
原文链接:https://blog.csdn.net/zengxuewen2045/article/details/51868976 1. 案例一:三个节点,关闭一个 由于维护和配置变更等工作需要 ...
- 排序总结(java)
public class sort { public static void main(String[] args) { int[] arr = {2, 5, 3, 4, 8, 5, 1}; //so ...
- String与StringBuffer之间的转换
来源:http://www.oschina.net/code/snippet_2261089_47352 package demo; /* String与StringBuffer之间的转换 * Str ...
- 解决 c3p0报错 Establishing SSL connection without server's identity verification is not recommended
_ 报错: Establishing SSL connection without server's identity verification is not recommended. Accordi ...
- 线性求第k大
快排变种. 快排每次只进行部分排序,进入左边或者右边或者当前mid就是答案. 据说期望值是O(n) 然后STL中的 nth_element也是用这个思想. #include <cstdio> ...