用亚马逊aws codebuild创建支持多环境运行的接口脚本

业务背景:

  1. 我们公司用的是亚马逊云,国内和国外都有账号
  2. 由于业务需要,我们需要同时部署7个地区的服务器,七个地区都需要测试

基于以上背景,为了实现测试配置项与脚本分离,我创建了版本一的脚本

  1. 用yaml文件加载不同区域的服务器接口地址和账号(亚马逊云国内账号和国外账号不通用,测试用例有需要调用账号信息,此时需要对应切换),如下图所示:                              
  2.  然后创建获取服务器信息和账户信息的类,读取yaml文件返回。                                                                                                                                                                                          这样每次测试一个地区的时候,只需要将其他地区注释掉,对应的将账户信息注释,就可以执行。这个脚本可行是可行,但是服务器区域有点多,每次都需要注释,有点麻烦,同时账户信息和区域得匹配,这样就很容易犯一些低级错误:如手太快了,注释错了,Git push上去发现跑错了区域;忘了注释,结果脚本出错了;服务器区域和账户信息不匹配,导致脚本报错access denied;或者全部注释了,提交了个寂寞……

版本一缺陷很明显,我就想找一种更为灵活的方式,正好我们使用的亚马逊云AWS,利用aws codebuild和codepipeline做CI/CD ,可以循环执行海外的服务器接口脚本。 

  1. 我在网上找到了一个用枚举方法,然后创建全局变量。于是果断优化我的脚本代码 env 是全局变量
  2. 全局变量搞定了,但是怎么结合codebuild的规则来执行我的脚本呢?首先想到的是linux的三剑客之一‘sed’ 去替换,这里我之前犯了一个错误,我将env的值用了一个变量url替代,然后用sed去替换变量的时候,发现只执行了第一个,后来才想起来,url在脚本第一次执行的时候就被替代了,所以后面执行的时候是找不到这个值的
  3. 脚本可以执行了,成功了一大步,但是我的脚本还有个功能,如果测试用例失败了,会将报告上传到服务器,然后发送邮件通知我。亚马逊云的规则是上传的时候必须先指定一个Key的值,我之前将Key的值写死了,这样导致我循环执行脚本的时候,失败了它就上传了报告,后一个会把之前的覆盖掉,于是看到的永远是最后一次失败的报告。这不满足我的要求啊,还是想用sed来搞定,但是搞了好久,还是搞不定。下面的脚本第二次没有执行成功过。   
  4. linux脚本我是搞不定了,但是功能得需要啊,我只能动我的测试脚本了,将原来写死的Key值根据服务器区域动态变化,这样上传的测试报告就不会被覆盖了。                                                                                    测试成功,我的逻辑是失败了上传测试报告,发送邮件,成功了只是发送通知,不会上传测试报告。
  5. 于是,最后的bash脚本就是这样的,将服务器列表全部加进去即可

经过这样修改,以后开发部署的时候,我只用点一下,就可以自动执行了,爽歪歪!!! 

最后,特别感谢网上这篇文章的思路,解决了我的大问题,非常感谢!一套测试用例如何实现支持多个环境运行_测试开发技术的技术博客_51CTO博客

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值