1

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

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

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

标头

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

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

提前致谢。

4

1 回答 1

1

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

首先,您需要一组属性文件,每个环境(本地、开发、测试、uat、...)一个。每个文件中各个属性的名称将相同,只有会因环境而异。例如,在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 脚本弹出一个对话框来选择一个属性文件并将这些值设置为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}地方引用项目属性即可。当我想切换环境时,我只需重新运行脚本。

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

于 2021-06-21T09:05:41.497 回答