MD5 在 SoapUI 中使用 Groovy

MD5 using Groovy in SoapUI

提问人:Victoria Serkov 提问时间:4/7/2017 更新时间:4/9/2017 访问量:1529

问:

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

有什么建议吗?我在谷歌上看了一下,找不到任何有用的东西。 提前致谢!

Groovy MD5 肥皂

评论

0赞 Rao 4/7/2017
您能否显示有关参数或屏幕截图的详细信息?你说的是测试用例属性吗?创建 MD5 或访问属性是否有问题?
0赞 Victoria Serkov 4/7/2017
问题是我如何访问参数,按字母顺序附加它们,以及在我需要添加的每个 key=value 之间。由于某种原因,我无法添加屏幕截图。
0赞 Rao 4/7/2017
不确定参数是什么意思?
0赞 Victoria Serkov 4/7/2017
我的意思是属性

答:

1赞 Rao 4/7/2017 #1

您可以使用 Groovy 脚本测试步骤检索 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 生成 请参阅此处

导入 java.security.MessageDigest

def generateMD5_A(字符串 s){ MessageDigest.getInstance(“MD5”).digest(s.bytes).encodeHex().toString() }

评论

0赞 Victoria Serkov 4/7/2017
顺便说一句,有没有办法将所有属性转移到测试中?还是将属性列表直接上传到测试中?
0赞 Rao 4/7/2017
你这是什么意思?不明白?你首先试过吗?
0赞 Victoria Serkov 4/7/2017
可以选择将属性文件上传到属性 testStep 中。之后,我创建了一个测试,我想将所有这些属性加载到测试中。起初我一个接一个地手动完成。
0赞 Rao 4/7/2017
上面的答案解决了你原来的帖子吗?如果没有,请编辑您的问题以获得正确的详细信息,请问?
0赞 Victoria Serkov 4/7/2017
关于您的解决方案,我得到的结果为空{}。如何指定从哪个测试用例中检索该数据?
0赞 Victoria Serkov 4/9/2017 #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&K=1473942615907cuwmviz

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

评论

0赞 Victoria Serkov 4/9/2017
Getting:groovy.lang.MissingMethodException:方法没有签名:Script115.generateMD5_A() 适用于参数类型:(java.lang.StringBuilder) 值:[M=10000330&PKey=c74737d2a1e27d2efec56cf8148bc6e2b68eac48a8daed17e795421c4acc51&a4=50000&a5=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)