基于jenkins平台接口测试的测试环境自动切换实现方案

达芬奇密码2018-08-09 13:30
项目繁荣发展, 业务线越来越多。由于项目的工程较多,版本的并行开发,无疑于雪上加霜,使得自动化测试举步维艰。接口测试需要跑在不同的测试环境,所以需要对应的host配置文件,我们接口测试框架将不同环境的host文件放到配置文件夹中,然后在配置文件去配置实现 host的切换,这样实现保证了本地的环境切换。如下图以host.properties为后缀的文件为我们测试环境的host文件。
但是接口测试是在Jenkins平台上跑的,测试结果的邮件也是通过jenkins自动发放给相关人员的。因此,我们需要在Jenkins去切换环境时,我们的做法是在本地代码上修改配置,然后将本地代码上传到服务器。因此,jenkins会通过拉取服务器的代码完成了环境切换的目的,但是这种操作比较麻烦而且不太实用。比如我们接口测试一般是跑在std环境,当有版本提测时,我们需要将环境切换到测试环境,这样就需要修改配置文件了,我们按照上述步骤进行修改,跑完后还需要切换回到std,需要进行两次修改,两次代码提交,操作比较麻烦。为了达到快速切换环境的目的,本文介绍一种方法,通过在jenkins配置参数然后执行shell脚本实现环境的自动切换,避免代码的修改及提交操作。
1.脚本实现思路
通常,接口测试工程中文件的目录结构如下图:
我们需要做的就是将host文件的前缀配置到执行文件config.properties中就可以了,这样传入不同的host文件前缀名到配置文件config.properties中,然后在代码中通过读取config.properties中的配置项达到环境切换的目的。config.properties文件内容如图:
那么在jenkins运行接口测试时,想达到切换环境的目的,我们只要将测试环境作为参数执行shell脚本,将对应的host文件前缀写到config.properties中,从而达到切换环境的目的,实现 无缝切换接口测试运行的测试环境。
运行jenkins job时,接口测试的代码会被拉到远程服务器的~/jenkins/workspace目录下,且jenkins 可以执行shell脚本,因此我们在jenkins 新增参数,然后通过shell脚本将参数传到远程服务器并通过执行远程服务器的shell脚本达到切换host的目的,jenkins job配置文件中具体shell脚本及参数如下:
通过在jenkins job配置页面中添加参数写入自己的测试环境名称,然后将其传到远程服务器作为服务器shell脚本的参数, change_environment.sh就是 服务器shell脚本,不填写任何内容时,默认跑std环境的工程,如果填写测试环境则执行填写的测试环境进行执行。具体如下:
其中 config_path为配置文件config.properties的路径,我们需要做的就是根据传入的测试环境名称将其转换为工程中的host文件前缀并将其写入都配置文件。由上图脚本我们可以看出,通过if语句来实现的。大家在实际应用中可以根据自己工程中host文件的命名规则修改脚本实现。
上述步骤实现后,我们通过jenkins 执行接口测试时,我们点击Build with Parametes然后在ENVIRONMENT中填写测试环境作为参数,然后点击开始构建即可实现 在指定环境下运行接口测试,实现了jenkins 平台自动切换接口测试环境的目的。


通过上述方案实现了接口测试切换环境的自动化,大家在沾沾自喜的同时我们切记要骄傲自满,因为还有问题在悄悄的潜伏在我们的身边,需要我们去想办法解决。这一问题就是 工程Dubbo依赖的自动配置。未完待续...



网易云新用户大礼包:https://www.163yun.com/gift

本文来自网易实践者社区,经作者付二帅授权发布。