51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 768|回复: 0
打印 上一主题 下一主题

以为测试老鸟分享接口测试自动化的总结与思考(三)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-11-22 16:30:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
TestNG 接口自动化实践  参数化测试示例

  以 DeviceStatusHSFService 为例,测试类如下:

  public class DeviceStatusHSFServiceTest {


      private DeviceStatusHSFService deviceStatusHSFService;


      @BeforeTest(alwaysRun = true)


      public void beforeTest() {


          String envName = System.getProperty("maven.env");  //运行环境可配置



          SwitchENV switchEnv = new SwitchENV(envName);    //运行环境可配置

          deviceStatusHSFService = HsfRepository.getConsumer(DeviceStatusHSFService.class, switchEnv.getEnv(),


              "HSF", switchEnv.getHsfVersion(), "aicloud-device-center", switchEnv.getTargetIp()).getTarget();


      }


      @Test(dataProvider = "updateDeviceStatus", dataProviderClass = DeviceStatusHSFServiceTestDataProvider.class)


      public void updateDeviceStatusTest(Long userId, String uuid, DeviceStatus deviceStatus){


          Result<Boolean> result = deviceStatusHSFService.updateDeviceStatus(userId, uuid, deviceStatus);


          System.out.println("traceId:"+EagleEye.getTraceId()+result.toString());


          Boolean res = result.getResult();


          assertTrue(res);


      }


  }




  其中通过 SwitchENV 类实现运行环境可配置:


  /**



   * 自定义环境配置

   */


  public class SwitchENV {


      /**


       * 运行环境


       */


      private Env env;


      /**


       * hsf环境


       */


      private String hsfVersion;


      /**


       * 目标机器


       */


      private String targetIp;


      /**


       * 环境名称


       */


      private String envName;


      public SwitchENV(String envName) {


          Properties prop = new Properties();


          // TODO: 本地自动化测试切换环境专用


          if (envName == null) {


              envName = "pre1";


          }


          switch (envName) {


              case "online": {


                  InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(


                      "config/application-online.properties");


                  try {


                      prop.load(in);


                  } catch (IOException e) {


                      e.printStackTrace();


                  }


                  env = Env.ONLINE;


                  break;


              }


              case "pre1": {


                  InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(


                      "config/application-pre1.properties");


                  try {


                      prop.load(in);


                  } catch (IOException e) {


                      e.printStackTrace();


                  }


                  env = Env.PREPARE;


                  break;


              }


              case "pre2": {


                  InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(


                      "config/application-pre2.properties");


                  try {


                      prop.load(in);


                  } catch (IOException e) {


                      e.printStackTrace();


                  }


                  env = Env.PREPARE;


                  break;


              }


              case "pre3": {


                  InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(


                      "config/application-pre3.properties");


                  try {


                      prop.load(in);


                  } catch (IOException e) {


                      e.printStackTrace();


                  }


                  env = Env.PREPARE;


                  break;


              }


              default:


                  try {


                      throw new Exception("环境变量输入错误!");


                  } catch (Exception e) {


                      e.printStackTrace();


                  }


                  break;


          }


          hsfVersion = prop.getProperty("hsfVersion").trim();


          targetIp= prop.getProperty("targetIp").trim();


          this.envName = envName;


      }


      public Env getEnv() {


          return env;


      }


      public String getHsfVersion() {


          return hsfVersion;


      }


      public String getTargetIp() {


          return targetIp;


      }


      public String getEnvName() {


          return envName;


      }


  }




  测试参数全部放在 DeviceStatusHSFServiceTestDataProvider 类中,实现具体的请求接口、参数、校验等数据做到与代码相隔离。


  /**


   * 自定义环境配置


   */


  public class SwitchENV {


      /**


       * 运行环境


       */


      private Env env;


      /**


       * hsf环境


       */


      private String hsfVersion;


      /**


       * 目标机器


       */


      private String targetIp;


      /**


       * 环境名称


       */


      private String envName;


      public SwitchENV(String envName) {


          Properties prop = new Properties();


          // TODO: 本地自动化测试切换环境专用


          if (envName == null) {


              envName = "pre1";


          }


          switch (envName) {


              case "online": {


                  InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(


                      "config/application-online.properties");


                  try {


                      prop.load(in);


                  } catch (IOException e) {


                      e.printStackTrace();


                  }


                  env = Env.ONLINE;


                  break;


              }


              case "pre1": {



                  InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(

                      "config/application-pre1.properties");


                  try {


                      prop.load(in);


                  } catch (IOException e) {


                      e.printStackTrace();


                  }


                  env = Env.PREPARE;


                  break;


              }


              case "pre2": {


                  InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(


                      "config/application-pre2.properties");


                  try {


                      prop.load(in);


                  } catch (IOException e) {


                      e.printStackTrace();


                  }


                  env = Env.PREPARE;


                  break;


              }


              case "pre3": {


                  InputStream in = SwitchENV.class.getClassLoader().getResourceAsStream(


                      "config/application-pre3.properties");


                  try {


                      prop.load(in);


                  } catch (IOException e) {


                      e.printStackTrace();


                  }


                  env = Env.PREPARE;


                  break;


              }


              default:


                  try {


                      throw new Exception("环境变量输入错误!");


                  } catch (Exception e) {


                      e.printStackTrace();


                  }


                  break;


          }


          hsfVersion = prop.getProperty("hsfVersion").trim();


          targetIp= prop.getProperty("targetIp").trim();


          this.envName = envName;


      }


      public Env getEnv() {


          return env;


      }


      public String getHsfVersion() {


          return hsfVersion;


      }


      public String getTargetIp() {


          return targetIp;


      }


      public String getEnvName() {


          return envName;


      }


  }









分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-24 16:41 , Processed in 0.070617 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表