Rest SoapUI 5.4.0服务器URL、凭据和基于环境的标题

Rest SoapUI 5.4.0服务器URL、凭据和基于环境的标题,rest,soapui,header-files,soap-client,ntlm-authentication,Rest,Soapui,Header Files,Soap Client,Ntlm Authentication,我有免费的SOAPUI5.4.0版本。 我们有多种环境,如Dev、ST、SIT和UAT。 我知道我不能在SOAPUI自由版本中创建特定于环境的文件。在postman中,NTLM身份验证是可能的,但有局限性。 我的问题是,是否可以基于某些端点或变量或任何其他选项填充标题、NTLM凭据和服务器URL,以便在需要时快速切换环境。 就像我们在《邮递员》中通过更改下拉列表所做的那样,所有必需的值都会被填充 到目前为止,我已经做了以下工作 我已经根据环境创建了所需的头文件,并将其导出到文件中,并在切换时导入

我有免费的SOAPUI5.4.0版本。 我们有多种环境,如Dev、ST、SIT和UAT。 我知道我不能在SOAPUI自由版本中创建特定于环境的文件。在postman中,NTLM身份验证是可能的,但有局限性。 我的问题是,是否可以基于某些端点或变量或任何其他选项填充标题、NTLM凭据和服务器URL,以便在需要时快速切换环境。 就像我们在《邮递员》中通过更改下拉列表所做的那样,所有必需的值都会被填充

到目前为止,我已经做了以下工作

我已经根据环境创建了所需的头文件,并将其导出到文件中,并在切换时导入相应的头文件

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

这是添加特定于环境的标头、服务器URL和NTLM凭据的正确方法。 或者有没有一个合适的方法来做到这一点


提前感谢。

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

首先,您需要一个属性文件集合,每个属性文件对应于本地环境、开发环境、测试环境、uat环境等。。。。每个文件中各个属性的名称将相同,并且只有值会随着环境的变化而变化。例如,在soapui.local.properties中:

在soapui.dev.properties中:

以以下格式保存具有名称的属性文件:soapui..properties。例如:

soapui.local.properties soapui.dev.properties soapui.uat.properties 然后,我使用下面的Groovy脚本弹出一个对话框来选择属性文件,并在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中使用属性,我只需在需要时引用项目属性,如${Projectwebservice.endpoint}。当我想切换环境时,我只需重新运行脚本

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

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

database.username=frodo_dev
database.url=jdbc:mysql://dev.database.server:3306/middleearth 
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);
    }
}