自动化测试用例如何进行参数化

发表于:2021-6-11 09:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:TesterAllen    来源:CSDN

分享:
  参数化
  如官网所述,我们可以利用@ParameterizedTest+@ValueSource或@CsvSource进行参数化设置。
  参数化实例:
  以雪球APP股票搜索功能为例
      @ParameterizedTest
      @CsvSource({
              "滴滴,滴滴出行",
              "alibaba,阿里巴巴",
              "sougou,搜狗"
      })
      public void 搜索股票(String searchInfo,String exceptName)   {
          String name = searchpage.inputSearchInfo(searchInfo).getAll().get(0);
          assertThat(name,equalTo(exceptName));
      }
  数据文件驱动
  官网中给出了@CsvFileSource的方法:
  csv数据文件驱动实例:
  csv数据文件:
  pdd
  xiaomi
  pdd
  测试用例demo
      @ParameterizedTest
      @CsvFileSource(resources = "/data/SearchTest.csv")
      void 选择(String keyword){
      ArrayList<String> arrayList = searchpage.inputSearchInfo("xiaomi").addSelected();
      }
  利用yaml文件进行数据文件驱动
  先看如何对yaml文件进行数据操作
  官方地址:https://github.com/FasterXML/jackson-dataformats-text/tree/master/yaml
  阮一峰教程:http://www.ruanyifeng.com/blog/2016/07/yaml.html
  从官网中可以得到如下信息
  Maven dependency
  To use this extension on Maven-based projects, use following dependency:
  <dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <version>2.9.2</version>
  </dependency>
  Usage
  Simple usage
  Usage is as with basic JsonFactory; most commonly you will just construct a standard ObjectMapper with com.fasterxml.jackson.dataformat.yaml.YAMLFactory, like so:
  ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
  User user = mapper.readValue(yamlSource, User.class);
  利用官网提供的信息可以封装方法对yaml文件进行操作:
  public static GlobalConfig load(String path){
          ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
          try {
              GlobalConfig config = mapper.readValue(GlobalConfig.class.getResource(path), GlobalConfig.class);
              return config;
          } catch (IOException e) {
              e.printStackTrace();
              return null;
          }
      }
  再来看Junit5提供的一个方法 @MethodSource
  利用此方法加载yaml文件中的数据,进行参数传递,完成数据文件驱动的目的
  · yaml文件:
  xqDemoConfig:
    username: 888
    password: 666
    testdata:
      滴滴: 滴滴出行
      alibaba: 阿里巴巴
      sougou: 搜狗
  测试用例demo
      @ParameterizedTest
      @MethodSource("YamlData")
      public void 搜索股票2(String searchInfo,String exceptName)   {
          String name = searchpage.inputSearchInfo(searchInfo).getAll().get(0);
          assertThat(name,equalTo(exceptName));
      }
      static Stream<Arguments> YamlData(){
          GlobalConfig config =GlobalConfig.load("/data/globalConfig.yaml");
          List<Arguments> list = new ArrayList<>();
          Arguments arguments = null;
          for (String key : config.xqDemoConfig.testdata.keySet()) {
              Object value = config.xqDemoConfig.testdata.get(key);
              arguments = arguments(key, value);
              list.add(arguments);
          }
          return Stream.of(list.get(0),list.get(1),list.get(2));
      }
  效果演示:

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号