SoapUI-将JWT令牌设置为全局项目参数

时间:2019-04-18 13:38:13

标签: soapui

我是SaopUI的新手。我用资源创建了一个项目。 我需要设置一些变量并将其用于请求。例如,我有我的JWT令牌,并且JWT令牌将经常更改(测试不同的用户和权限=不同的JWT令牌) 那么,是否存在一种方式可以为项目全局设置参数并将其用作“链接”(在该参数/值上)的请求的HEADER参数?

谢谢!, 扬

1 个答案:

答案 0 :(得分:0)

您可能对Property Expantions

感兴趣
  

SoapUI提供了一种通用语法来在处理过程中动态插入(“扩展”)属性值。语法如下:

     

$ {[scope] propertyName [#xpath-expression]}

     

其中scope可以是以下文字值之一:

     

#Project#-引用项目属性(特定SoapUI项目的引用属性)

     

#TestSuite#-在包含的TestSuite中引用TestSuite属性

     

#TestCase#-在包含的TestCase中引用一个TestCase属性

     

#MockService#-在包含的MockService中引用MockService属性

     

#Global#-引用全局属性。在“文件”>“首选项”>“全局属性”选项卡中找到。所有项目的参考属性

     

#System#-引用系统属性。在帮助>系统属性中找到。

     

#Env#-引用环境变量

     

[TestStep名称]#-引用一个TestStep属性

     

当然,许多范围仅在可用时才起作用,即,您不能在TestCase脚本中使用#MockService#范围,因为其中没有可访问的MockService。

     

如果未指定范围,则按以下方式解析属性:

     
      
  • 检查当前上下文(例如TestRunContext)中具有匹配名称的属性

  •   
  • 检查匹配的全局属性

  •   
  • 检查匹配的系统属性

  •   

例如,您可以创建一个常规步骤来设置变量:

import groovy.json.JsonSlurper

project = testRunner.getTestCase().testSuite.getProject();

testStep = testRunner.testCase.testSteps["YourApiRequestStep"]

def Response = testStep.getProperty("response").value;

def someFieldYouWantToSave = ""


if (Response == null) {
    log.error('No Response found.');
}
else {
    def jSlurper = new JsonSlurper();
    def json = jSlurper.parseText(Response);
    if (json.get("theFieldFromTheResponse") == null){
        log.error "TheFieldFromTheResponse not found in response. Please execute the teststep and try again"
    } else {
        someFieldYouWantToSave = json.get("theFieldFromTheResponse").toString()
        testRunner.testCase.setPropertyValue("someFieldYouWantToSave", someFieldYouWantToSave)
    }
}

然后您可以在请求中使用该属性,如下所示: $ {#Project#theFieldFromTheResponse}