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}
地方引用项目属性即可。当我想切换环境时,我只需重新运行脚本。
我通常从项目的加载脚本选项卡运行脚本。如果脚本没有为您运行,请检查您的首选项中的全局安全设置并取消选中禁用加载和保存脚本复选框。