微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SoapUI 5.4.0 服务器 URL、凭据、基于环境的标头

如何解决SoapUI 5.4.0 服务器 URL、凭据、基于环境的标头

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

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

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

Headers

在端点下添加了服务器 URL。

enter image description here

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

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

提前致谢。

解决方法

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}。当我想切换环境时,我只需重新运行脚本即可。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。