本文已参与「新人创作礼」活动,一起开启掘金创作之路。
切换环境的背景
在日常在工作过程中,一个项目会维护多套测试环境用于不同版本的迭代,这样可以减少一些外在因素影响迭代。这个时候,如何使用一套自动化脚本去测试多套环境的迭代就显得尤其重要
读取配置文件
因为目前项目使用的是TestNG做的接口自动化,如果使用Python的同学可以参考一下思路 java读取配置文件有多种方式
方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来 方式二:采用ResourceBundle类读取配置信息 方式三:采用ClassLoader方式进行读取配置信息 方法四:getResouceAsStream 方法五:PropertiesLoaderUtils 工具类
这里我们采用方式二,这个方式更加适合我们当前的项目,同时方便接入我们现有的工具平台,通过命令行的方式,动态切换测试环境
public class Env {
public String chooseEnv(){
# 读取config.properties 文件
ResourceBundle envBundle = ResourceBundle.getBundle("config");
#读取env的值
return envBundle.getString("env");
}
}
public class test {
public static void main(String[] args) {
String env =new Env().chooseEnv();
ResourceBundle bundle = ResourceBundle.getBundle(env);
String url = bundle.getString("test.url");
System.out.println(url);
}
}
项目目录结构:
配置文件的内容
config.properties
env=test1
test1.properties
test.url=http://test1.com
test2.properties
test.url=http://test2.com
运行效果
此时 config.properties 文件的内容指向的是test1,所以当我们运行test.java中的main方法时,这里指定的url 就是test1环境的,如果需要指向test2,将内容指向test2即可。
在测试工具平台中可以通过
-D= : set a system property 设置系统属性。
java -Denv="test1" -jar test.jar
的方式来切换测试环境
总结
通过配置文件的方式,将各个测试环境的差异化配置单独拎出来,再配合平台的动态系统配置可丝滑的实现环境的切换。如果有CICD的接入,在构建时增加上自动化回归测试的卡点,进一步保障了代码上线的质量