转载自: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. U盘安装kali中CDROM问题解决

    1,采用ultraISO 制作Kali的安装盘,无法安装.U盘不能被识别. 2,改用win32diskimager,能识别了,但期间出现CDROM找不到. 3,采用网上方式,ALT+ F2,ls /d ...

  2. Struts2配合layui多文件上传--下载

    先说上传: 前台上传文件的js代码: var demoListView = $('#demoList') ,uploadListIns = upload.render({ elem: '#testLi ...

  3. Thymeleaf中href与 th:href的区别

    语法格式如下: <a th:href="@{/channel/page/add}">添加渠道 </a> <a href="/channel/ ...

  4. chrome console.log失效

    把红框里的内容去掉就可以了 那个框是过滤..

  5. 【原创】Arduino入门基础知识总结

     一.概述   Arduino是源自意大利的一个开放源代码的硬件项目平台,该平台包括一块具备简单I/O功能的电路板以及一套程序开发环境软件. Arduino可以用来开发交互产品,比如它可以读取大量的开 ...

  6. Fescar: Fast & Easy Commit And Rollback

    Fescar is an easy-to-use, high-performance, java based, open source distributed transaction solution ...

  7. 三,用户交互方式与python基本数据类型

    一.与用户交互 input python2中:用户输入什么类型的数据,就储存为什么类型的数据.比如输入数字则储存为整型,输入符号则存储为字符串型.raw_input会将所有输入的类型转换为字符串型. ...

  8. JdbcTemplate 配置多数据源(完全照抄,完整)

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  9. docker的网络访问

    Docker的网络访问: #systemctl  start docker #ifconfig [root@zizhen02 ~]# ifconfig docker0: flags=4099<U ...

  10. 使用hibernate原生sql查询,结果集全为1的问题解决

    问题如下: String sqlTest ="select summary,summaryno from F_Summary"; List<Map<Object, Ob ...