SoapUI 5.4.0 服务器 URL、凭据、headers 基于环境

SoapUI 5.4.0 Server URL, Credentials, headers based on environment

我有免费版的 Soap UI 5.4.0。 我们有多种环境,如 Dev、ST、SIT、UAT。 我知道我无法在 Soap UI 免费版本中创建环境特定文件。 (在邮递员中它可能但限制了 NTLM 身份验证)。 我的问题是可以根据某些端点或变量或任何其他选项填充 headers、NTLM 凭据和服务器 URL,以便我可以根据需要快速切换环境。 (就像我们在 Postman 中所做的那样,通过更改下拉列表填充所有必需的值)

到目前为止,我已经完成了以下操作。

我已经根据环境创建了必需的 headers 并将它们导出到文件并在切换时导入适当的 header 文件

在终结点下添加了服务器 URLS。 (有使用用户名和密码的选项我不知道如何根据端点选择在 NTLM 身份验证中填充这些值,我必须在更改环境时手动 add/modify)

这是添加环境特定 headers、服务器 URL 和 NTLM 凭据的正确方法吗? 或者有什么好的方法吗

提前致谢。

soapUI Pro 中的环境切换功能非常好,但我主要使用 OSS 版本,所以我不得不按照相同的思路创建自己的实用程序。

首先,您需要一组 属性 个文件,每个环境一个(本地、开发、测试、uat 等)。每个文件中各个属性的 names 将相同,只有 value 会因环境而异。例如,在 soapui.local.properties:

webservice.endpoint=http://localhost:8080/webservice

database.username=frodo
database.url=jdbc:mysql://localhost:3306/middleearth 

并且,在 soapui.dev.properties 中:

webservice.endpoint=https://dev.server.com:8080/webservice

database.username=frodo_dev
database.url=jdbc:mysql://dev.database.server:3306/middleearth 

使用以下格式的名称保存 属性 个文件:soapui.<environment>.properties。例如:

  • soapui.local.properties
  • soapui.dev.properties
  • soapui.uat.properties

然后,我使用以下 Groovy 脚本弹出一个对话框到 select 一个 属性 文件,并将这些值设置为 soapUI 中的项目级属性:

import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.types.StringToStringMap;
import com.eviware.x.form.XForm;
import com.eviware.x.form.XFormDialog;
import com.eviware.x.form.XFormDialogBuilder;
import com.eviware.x.form.XFormFactory;
  
log.info project.getName()
envDialog = new EnvironmentDialog(log)
  
if (envDialog.configure()) {
    target = envDialog.getEnv()
    path = context.expand(project.getResourceRoot())
    file = path + "\environment." + target + ".properties"
    log.info "Loading property file $file"
    project.addPropertiesFromFile(file)
}  
return
        
public class EnvironmentDialog {
    private static final String ENVIRONMENTS = "Environments";
    private XFormDialog dialog;
    private String env;
    def log
  
    public EnvironmentDialog(org.apache.log4j.Logger logger)
    {
        log = logger
    }
    public boolean configure() {
            if (dialog == null) {
                buildDialog();
            }
        StringToStringMap values = new StringToStringMap();
        dialog.setOptions(ENVIRONMENTS, new String("local,dev,test,uat").split(","));
        values = dialog.show(values);
  
        if (dialog.getReturnValue() == XFormDialog.OK_OPTION) {
            try {
                  env = values.get(ENVIRONMENTS)
                  log.info "set env = " + env
                return true
            }
            catch (Exception e) {
                UISupport.showErrorMessage(e.getMessage());
                return false
            }
        }
        return false
    }
    public String getEnv() {
        return env
    }
  
  
    private void buildDialog() {
            XFormDialogBuilder builder = XFormFactory
                        .createDialogBuilder("Pick Environment");
            XForm form = builder.createForm("Basic");
            form.addComboBox(ENVIRONMENTS, new String[0], "Environment options");
            dialog = builder.buildDialog(
                builder.buildOkCancelActions(),
                "SOAPUI Test Properties target selected environment",
                UISupport.OPTIONS_ICON);
    }
}

将文件路径设置为 属性 个文件的完全限定位置。

要使用 soapUI 中的属性,我只在需要的地方引用项目 属性,例如 ${#Project#webservice.endpoint}。当我想切换环境时,我只是重新运行脚本。

我通常 运行 项目的加载脚本选项卡中的脚本。如果脚本不适合您 运行,请检查首选项中的全局安全设置并取消选中禁用加载和保存脚本复选框。