zoukankan      html  css  js  c++  java
  • SoapUI接口测试-验签值处理-调用java的加密jar包

    转载自: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 FilesSmartBearSoapUI-Pro-5.1.2inext

     
     

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

     
     
     

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

     
     
     
    1. //调用公用加密方法
    2. def myMd5 = new MD5()
    3. def key = "AAAAAAAAAAAAA"
    4.  
    5. //传参
    6. def mapMd5 = [:]
    7. mapMd5 = [
    8. 'service':context.expand( '${DataSource#service_name}' ), 
    9. 'version':context.expand( '${DataSource#version}' ),
    10. 'AAA':context.expand( '${DataSource#AAA}' ),
    11. ] 
    12. //取DataSource的参数值
    13. def myDatasource =  testRunner.testCase.testSteps["DataSource"] 
    14.     
    15. //MD5加密  Start
    16.  def output = myMd5.getMapString(mapMd5,key) 
    17. log.info "output: " + output   
    18. def sign = myMd5.getMD5(output) 
    19. log.info "sign: " + sign
    20. //MD5加密  End  
    21.  
    22. testRunner.testCase.testSteps["HTTP"].setPropertyValue("sign",sign)
    3.HTTP接口的sign值被上个步骤设置,调取接口
     
     
    4. 校验参数是否正确,自己根据需求进行校验
    5. 将需要的参数输出
     
    6. 设置循环的参数和接口
     
     
    7. 执行数据源里面的接口,进行自动化测试
     

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

  • 相关阅读:
    selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
    漫说996icu黑名单
    python datetime object 去除毫秒(microsecond)
    webpack4 系列教程(十四):Clean Plugin and Watch Mode
    webpack4 系列教程(十三):自动生成HTML文件
    webpack4 系列教程(十二):处理第三方JavaScript库
    webpack4 系列教程(十一):字体文件处理
    第一次遭遇云服务器完全崩溃
    music-api-next:一款支持网易、xiami和QQ音乐的JS爬虫库
    MathJax: 让前端支持数学公式
  • 原文地址:https://www.cnblogs.com/yangcx666/p/9251788.html
Copyright © 2011-2022 走看看