Java接口自动化的使用,生成美化测试报告篇!
1.使用Java开展接口自动化需要准备的pom:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.10</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
2.下面开始封装Get和Post请求:
2.1因为使用到了log4j加日志,以及将参数转为JSON格式,下面是我们需要的pom依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.2log4j.properties配置文件详情(需要注意:log4j.properties文件需要放resources目录下,不然运行时会找不到文件不能初始化):
2.2(1)可能会有小伙伴想问为什么要加日志?
解答:1.在代码中生成日志有助于我们复盘,运行代码时,记录关键的数据。
2.实时查看代码的运行状态,如果运行已结束,错过运行时监管,事后通过log文件查看重要的运行数据及状态。
#根logger设置
log4j.rootLogger = INFO,console,file
###输出信息到控制台###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = [%p] %d{yyyy-MM-dd HH:mm:ss} method: %l -> %m%n
###输出 INFO 级别以上日志文件设置###
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File = target/apitest.log
log4j.appender.file.Append = true
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} method: %l - [ %p ] -> %m%n
Get:
/**
*get请求
* @param url 接口请求地址
* @param params 请求参数
* @return
*/
public static String doGet(String url, Map <String, Object> params){
log.info("开始调用doGet(),此方法用于发起get请求");
int number = 1;
for (Map.Entry<String ,Object> entry : params.entrySet()) {
//如果number=1,那就代表再url与参数的拼接处,以"?"拼接
url += (number == 1) ? ("?" + entry.getKey() + "=" + entry.getValue()) : ("&" + entry.getKey() + "=" + entry.getValue());
log.info("当前请求url和params:" + url);
number++;
}
//指定接口请求方式
HttpGet httpGet = new HttpGet(url);
//设置请求头
httpGet.addHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
addCookieInRequestHeaderBeforeRequest(httpGet);
CloseableHttpResponse response = null;
CloseableHttpClient client = null;
String result = "";
try {
//发送请求获取响应数据实体
client = HttpClients.createDefault();
//将获取到得数据,添加到请求头
addCookieInRequestHeaderBeforeRequest(httpGet);
response = client.execute(httpGet);
//获取http状态码
int statusCode = response.getStatusLine().getStatusCode();
if (!("200".equals(String.valueOf(statusCode)))) {
log.warn("请求失败,请检查请求参数及请求头!");
}
//获取http响应实体
result = EntityUtils.toString(response.getEntity());