转载自:https://www.jianshu.com/p/7c672426a165java
一. 背景:
调用接口时有个请求参数是对请求入参按必定规则进行加密生成的验签值,每次不一样参数的请求生成惟一的验签值,验签值不对,接口会报相应的错误。工具
二. 解决方案:
- 代码写死帐号,写死的帐号不走验证逻辑
- 调用接口以前,按照加密规则生成同样的验签值
三. 下面用soapui工具进行接口测试生成正确验签值的示例:
- 参数化请求参数(DataSource)
- 使用groovy脚本调用java加密的jar包生成正确的验签值 (Groovy Script)
- 调用接口 (HTTP)
- 校验输出是否正确 (Groovy Script 或者 Assertion TestStep)
- 将须要的数据输出 (DataSink)
- 循环参数化的参数进行不一样参数的接口测试 (DataSoure Loop)
- 执行全部参数请求
1.参数化请求参数
1.1 新建DataSource步骤oop
1.2 准备excle参数化数据测试
1.3 添加参数化文件,而且加上后续接口调用须要的字段名(最好和请求参数保持一致)ui
1.4 选择须要的参数行数加密
2.Groovy 脚本
2.1 添加Groovy Script脚本步骤spa
2.2 将java加密jar包放在soapui安装目录下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\extblog
2.3 写groovy脚本调用java加密jar包生成同样的验签值,放在soapui的安装目录下--C:\Program Files\SmartBear\SoapUI-Pro-5.1.2\bin\scripts下
将公用的脚本都可放在次目录下,供soapui直接调用接口
2.4 soapui里面的groovy脚本调用公用的scripts里面的脚本按不一样请求生成正确的sign值ip
- //调用公用加密方法
- 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. 执行数据源里面的接口,进行自动化测试
--------------至此,整个接口就能够顺利自动化调取了和校验了----------------