【问题标题】:MD5 using Groovy in SoapUI在 SoapUI 中使用 Groovy 的 MD5
【发布时间】:2017-04-06 17:22:30
【问题描述】:

我创建了一个测试用例,其中包含由键和值组成的参数。 我需要按字母顺序获取所有这些参数,然后创建一个 MD5 哈希值,我将把它传递给这个测试的参数之一。

有什么建议吗?我查看了谷歌,找不到任何有用的东西。 先谢谢了!

【问题讨论】:

  • 您能显示有关参数或屏幕截图的详细信息吗?你在谈论测试用例属性吗?是创建 md5 还是访问属性的问题?
  • 问题是我如何访问参数,按字母顺序附加它们,以及在每个键=值之间我需要添加 &。由于某种原因,我无法添加屏幕截图。
  • 不确定参数是什么意思?
  • 我的意思是属性

标签: groovy md5 soapui


【解决方案1】:

您可以使用 Groovy Script 测试步骤检索 SoapUI 的测试用例属性,如下所示。

def map = context.testCase.properties.keySet().inject([:]){map, key ->  map[key] = context.testCase.getPropertyValue(key); map }  
map.each { key, value ->     log.info "Property name : ${key} and value : ${value}" }

由于您拥有 map / key=value 格式的属性,因此您应该能够实现您正在寻找的内容。

关于md5生成参考here

导入 java.security.MessageDigest

def generateMD5_A(String s){ MessageDigest.getInstance("MD5").digest(s.bytes).encodeHex().toString() }

【讨论】:

  • 顺便说一句,有没有办法将所有属性转移到测试中?还是将属性列表直接上传到测试中?
  • 这是什么意思?不清楚,不知道,不懂?您是否首先尝试过?
  • 有一个选项可以将属性文件上传到属性 testStep。之后我创建了一个测试,我想将所有这些属性加载到测试中。我一开始是一个一个手动做的。
  • 以上答案是否解决了您的原始帖子?如果不是,请编辑您的问题以提供正确的详细信息?
  • 关于您的解决方案,我得到的是空结果 {}。如何指定从哪个测试用例中检索该数据?
【解决方案2】:

我做了以下事情:

import java.security.MessageDigest
def testStep = testRunner.testCase.testSteps["3D Secure Call"]
def str = new StringBuilder();
 for (prop in testStep.getPropertyList()){

    if(prop.getName() != "K" && prop.getName() != "RawRequest" && prop.getName() != "Domain" && prop.getName() != "Password" && prop.getName() != "ResponseAsXml" && prop.getName() != "Request" &&  prop.getName() != "RawRequest" && prop.getName() != "Response" && prop.getName() != "Username" && prop.getName() != "Endpoint"){
        str.append(prop.getName() + "=" + testStep.getPropertyValue(prop.getName()) + "&" )

    }
}
str.append("K=1473942615907cuwmviz")
return (MessageDigest.getInstance("MD5").digest(str.bytes).encodeHex().toString())

我得到了我希望的字符串:M=10000330&PKey=8c124262b3d66f9e47185fd34eec13bbef2acd03170bcf8c284985193bc9a6&a4=50000&a5=EUR&XID=12345678912345678912&90717145viz9262&90714

但现在我需要应用 MD5,但出现错误。有什么建议么? 没有这样的属性:类的字节数:java.lang.StringBuilder

【讨论】:

  • Getting:groovy.lang.MissingMethodException: 无方法签名: Script115.generateMD5_A() 适用于参数类型: (java.lang.StringBuilder) 值: [M=10000330&PKey=c74737d2a1e27d2efec56cf8148bc6e2b68eac4801040a&215&a4ac=c4ac54040daed17e&7954 EUR&XID=12345678912345678912&K=1473942615907cuwmviz] 可能的解决方案: generateMD5_A(java.lang.String) 行错误: 14 我更改了: def generateMD5_A(String s){ MessageDigest.getInstance("MD5").digest(s.bytes).encodeHex( ).toString() } generateMD5_A(str)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多