首页 > 编程语言 >走进Java接口测试之读取配置文件

走进Java接口测试之读取配置文件

时间:2023-04-06 13:08:17浏览次数:41  
标签:Java 读取 配置文件 Server host org import port

走进Java接口测试之读取配置文件_spring

前言

但在大部分用例开发环境下,添加额外配置是无所避免的,比如自定义应用端口号、服务地址、数据库的配置等,都或多或少的需要一些外部的配置项等。

在前文中我们有详细介绍在接口测试框架中如何基于 SpringBoot 快速搭建多环境配置,本文将在原有的基础上介绍集成如何快速读取配置文件的值。

走进Java接口测试之多环境配置

配置文件简要说明

SpringBoot 默认的全局配置文件名为 application.propertiesapplication.yml (spring官方推荐使用的格式是 .yml 格式),程序启动时会自动加载此文件,无需手动引入。除此之外还有一个 bootstrap 的全局文件,它是在 application 配置文件之前加载,主要是用于在应用程序上下文的引导阶段,在后 SpringCloud时,主要是利用此特性,进行配置文件的动态修改,在此 我们演示 application.properties 配置。

Demo 演示

这次在多环境配置的 demo 的基础进行扩展。

自定义属性值

filter-dev.properties 配置文件增加自定义属性,比如:


1. host=http://127.0.0.1
2. port=8082

application-dev.properties 增加配置项:

1. Server.host=${host}
2. Server.port=${port}

新建配置实体类

我们可以通过两种方式配置绑定对象。

第一种方式:@Value() 方式 在类域属性上通过 @Value("${xxx}") 指定关联属性, SpringBoot 会自动加载。@Component 注解使其在启动时被自动扫描到。


1. package com.zuozewei.springboot.model;
2. 
3. import lombok.Data;
4. import org.springframework.beans.factory.annotation.Value;
5. import org.springframework.stereotype.Component;
6. 
7. /**
8.  * 描述:
9.  * 配置文件实体类
10.  *
11.  * @author zuozewei
12.  * @create 2019-12-20 16:15
13.  */
14. 
15. @Component
16. @Data
17. publicclassConfigurations1{
18. 
19. @Value("${Server.host}")
20. privateString host;
21. 
22. @Value("${Server.port}")
23. privateString port;
24. 
25. }

第二种方式:@ConfigurationProperties 属性

手动书写 @Value 注解还是比较繁重的工作,好在 SpringBoot 提供了更简洁的方式。@ConfigurationProperties(prefix = "Server")。prefix 指定了配置文件的前缀为 Server,并且按照属性名进行自动匹配。例如:Server.host属性值会自动加载到 privateStringhost 域中。


1. package com.zuozewei.springboot.model;
2. 
3. import lombok.Data;
4. import org.springframework.boot.context.properties.ConfigurationProperties;
5. import org.springframework.stereotype.Component;
6. 
7. /**
8.  * 描述:
9.  * 配置文件实体类
10.  *
11.  * @author zuozewei
12.  * @create 2019-12-20 16:15
13.  */
14. 
15. @Component
16. @Data
17. @ConfigurationProperties(prefix = "Server")
18. publicclassConfigurations2{
19. 
20. privateString host;
21. privateString port;
22. 
23. }

PS:locations 还能够指定自定义的配置文件位置,这里就不多说了。

  1. @ConfigurationProperties(prefix = "Server", locations = "classpath:xxxx.properties")

用例读取

编写测试用例,通过 @Autowired 注解注入 bean 调用。


1. package com.zuozewei.springboot.test;
2. 
3. import com.zuozewei.springboot.model.Configurations1;
4. import lombok.extern.slf4j.Slf4j;
5. import org.springframework.beans.factory.annotation.Autowired;
6. import org.springframework.boot.test.context.SpringBootTest;
7. import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
8. import org.testng.annotations.BeforeClass;
9. import org.testng.annotations.Test;
10. 
11. /**
12.  * 描述:
13.  * 演示测试用例1
14.  *
15.  * @author zuozewei
16.  * @create 2020-01-03 11:02
17.  */
18. 
19. @SpringBootTest
20. @Slf4j
21. publicclassTestCase1extendsAbstractTestNGSpringContextTests{
22. 
23. @Autowired
24. privateConfigurations1 configurations;
25. 
26. @BeforeClass
27. publicvoid beforeClass() {
28. String host = configurations.getHost();
29. String port = configurations.getPort();
30. String url = host +":"+ port;
31.         log.info("URL:"+ url );
32. }
33. 
34. @Test
35. publicvoid test(){
36.         log.info("TestCase run...");
37. }
38. 
39. }

注意:

  • SpringBoot 中读取配置文件不能放到 @BeforeSuite 注解,否则会导致 @Autowired 不能加载 Bean;
  • SpringBoot 中使用 TestNg 必须加上 @SpringBootTest,并且继承 AbstractTestNGSpringContextTests,如果不继承 AbstractTestNGSpringContextTests,会导致 @Autowired 不能加载 Bean。

测试验证

最好跑测看下结果,我们可以看到配置文件读取成功:走进Java接口测试之读取配置文件_Server_02

小结

测试框架使用 SpingBoot 读取配置文件比我们传统方式要简单很多,上述我们主要介绍了过两种方式配置绑定对象:

  • @Value() 注解
  • @ConfigurationProperties 属性 最后在测试用例开发中,结合 @Autowired 注解注入 bean 调用读取即可。

希望本文对你有所启发。


示例代码:

https://github.com/7DGroup/Java-API-Test-Examples/tree/master/springboot-configuration-demo


标签:Java,读取,配置文件,Server,host,org,import,port
From: https://blog.51cto.com/u_15181572/6172655

相关文章

  • 性能监控之常见 Java Heap Dump 方法
    一、前言在本文中,我们总结下抓Javadump的几种不同方法。JavaHeapDump是特定时刻JVM内存中所有对象的快照。它们对于解决内存泄漏问题和分析Java应用程序中的内存使用情况非常有用。JavaHeapDump通常以二进制格式的hprof文件存储。我们可以使用jhat或JVisualVM之......
  • 1- Java概述
    1.人机交互1.1什么是cmd?就是在windows操作系统中,利用命令行的方式去操作计算机。我们可以利用cmd命令去操作计算机,比如:打开文件,打开文件夹,创建文件夹等。1.2如何打开CMD窗口?按下快捷键:win+R。此时会出现运行窗口。在运行窗口中输出cmd输出回车。解......
  • 2-Java基础语法
    1.注释注释是对代码的解释和说明文字。Java中的注释分为三种:单行注释://这是单行注释文字多行注释:/_这是多行注释文字这是多行注释文字这是多行注释文字_/注意:多行注释不能嵌套使用。文档注释(暂时用不到):/*_这是多行注释文字这是多行注释文字这是多......
  • java面试题学习记录2
    1.索引的分类 主键索引,联合索引,唯一索引,全文索引,普通索引2.锁的分类 行锁:操作数据库时,锁定整行数据 表锁:操作数据库时,锁定整表数据 乐观锁:多线程情况下,认为其他线程不会去修改的数据,所以不会上锁,但是会在跟新时,判断一下数据有没有被改变,可以用版本号机制 悲......
  • 【过滤器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介过滤器模式(FilterPattern)或标准模式(CriteriaPattern),是一种结构型模式。这种模式允许使用不同的标准条件来过滤一组对象,并通过逻辑运算的方式把各条件连接起来,它结合多个标准来获得单一标准。例子将创建一个Person对象、Criteria接口和实现了该接口的实体类,来过滤Perso......
  • 走进Java接口测试之从0到1搭建数据驱动框架(需求篇)
    前言一个“好的”数据驱动框架,需要从“时间”、“人力”、“收益”这三个方面出发,做好“取舍”。不能由于被测业务系统发生一些变更,就导致花费了几个小时的脚本无法执行。同时,我们需要看到“收益”,不能为了总想看到100%的成功,而减少必须做的工作,这导致可能都需要进行大量的维护。......
  • org.apache.shiro.session.InvalidSessionException: java.lang.I
    1.遇到以下异常,找了好长时间,终于解决,报的异常如下:七月07,20173:02:16下午org.apache.catalina.core.StandardWrapperValveinvoke严重:Servlet.service()forservlet[SpringMVC]incontextwithpath[/IMP]threwexception[org.apache.shiro.session.InvalidSessionEx......
  • 读取配置文件的配置字典数据(字典数据包含中文)
        项目有时为了方便配置数据字典,会创建类似于“test=测试”的key-value形式的数据字典,在项目启动时便缓存该字典数据,方便后续使用;但是该字典有时候又存在中文,在加载之后会出现乱码问题,便需要对加载的数据进行特殊处理。publicclassConfigUtils{/***加......
  • java中如何创建带路径的文件
    请教各位大侠了,java中如何创建带路径的文件,说明下这个路径不存在------回答---------------其他回答(2分)---------JavacodeFilef=newFile("c:/1.txt");if(!f.exists()){try{f.createNewFile();}catch(IOExceptione){e.printStackTrace();}}------其他回答(18分)----......
  • java之常用正则表达式
    http://wenku.baidu.com/link?url=gLcsovVfQqRTVayxGGaWBpjyewi4qOopgEJ3JYWaPSm_VqIsX1ALI_ZJpnrMf51P2eFpWK03DbPQly7Hfs4yI1hqWJnHDSJBjfzKkrfLZKWhttps://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx......