51Testing软件测试论坛

标题: 以为测试老鸟分享接口测试自动化的总结与思考(三) [打印本页]

作者: 草帽路飞UU    时间: 2022-11-22 16:30
标题: 以为测试老鸟分享接口测试自动化的总结与思考(三)
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;


      }


  }














欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2