pom.xml  文件中dependency

 <dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
</dependency>
<dependency>
<groupId>com.relevantcodes</groupId>
<artifactId>extentreports</artifactId>
<version>2.41.1</version>
</dependency>
<dependency>
<groupId>com.vimalselvam</groupId>
<artifactId>testng-extentsreport</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>3.0.6</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.14</version>
</dependency>
</dependencies>

application.properties 文件, 配置一些常量, 例如:

 # 请求URL
test.uri=http://localhost:8889
test.post.path1=/postDemo
test.post.path2=/postDemoWithCookie
test.get.path1=/getDemo?
test.get.path2=/getDemoWithCookie? # 请求头信息
header.accept=*/*
header.user.agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36
header.content.type=application/json;charset=utf-8
header.accept.charset=utf-8
header.cookie=login=true

公共类的提取, 例如HttpUtils.java , ReadConfig.java

 package com.testng.utils;

 import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils; import java.io.IOException; public class HttpUtils { private static DefaultHttpClient defaultHttpClient = null; public static String doGet(String url) throws IOException {
String result;
defaultHttpClient = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
setHeader(get);
result = EntityUtils.toString(defaultHttpClient.execute(get).getEntity(), "utf-8");
return result;
} public static String doPost(String url, String data) throws IOException {
String result;
HttpPost post = new HttpPost(url);
setHeader(post);
post.setEntity(new StringEntity(data, "utf-8"));
defaultHttpClient = new DefaultHttpClient();
result = EntityUtils.toString(defaultHttpClient.execute(post).getEntity(), "utf-8");
return result;
} private static void setHeader(HttpRequestBase httpRequestBase) {
httpRequestBase.setHeader("Accept", ReadConfig.ACCEPT);
httpRequestBase.setHeader("User-Agent", ReadConfig.USER_AGENT);
httpRequestBase.setHeader("Content-Type", ReadConfig.CONTENT_TYPE);
httpRequestBase.setHeader("Accept-Charset", ReadConfig.ACCEPT_CHARSET);
httpRequestBase.setHeader("Cookie", ReadConfig.COOKIE);
} }
 package com.testng.utils;

 import lombok.Data;

 import java.util.Locale;
import java.util.ResourceBundle; @Data
public class ReadConfig { private static ResourceBundle bundle = ResourceBundle.getBundle("application", Locale.CHINA); public static String ACCEPT = bundle.getString("header.accept");
public static String USER_AGENT = bundle.getString("header.user.agent");
public static String CONTENT_TYPE = bundle.getString("header.content.type");
public static String ACCEPT_CHARSET = bundle.getString("header.accept.charset");
public static String COOKIE = bundle.getString("header.cookie");
public static String URI = bundle.getString("test.uri");
public static String POST_PATH1 = bundle.getString("test.post.path1");
public static String POST_PATH2 = bundle.getString("test.post.path2");
public static String GET_PATH1 = bundle.getString("test.get.path1");
public static String GET_PATH2 = bundle.getString("test.get.path2"); }

TestNG测试类

 package com.testng.cases;

 import com.alibaba.fastjson.JSONObject;
import com.testng.utils.HttpUtils;
import com.testng.utils.ReadConfig; import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test; import java.io.IOException; public class DoPostTest { @Test
public void postTest() throws IOException {
String url = ReadConfig.URI + ReadConfig.POST_PATH1;
Reporter.log("请求地址" + url);
JSONObject param = new JSONObject();
param.put("name","zhangsan");
param.put("password","123456");
Reporter.log("请求体" + param.toString());
String result = HttpUtils.doPost(url, param.toString());
Reporter.log("请求结果" + result);
Assert.assertEquals(result, "{\"msg\":\"success\",\"status\":1011,\"token\":\"ZZZZZZZZZZZZZZZZZZZZZZ\"}");
} @Test
public void postTest2() throws IOException {
String url = ReadConfig.URI + ReadConfig.POST_PATH2;
Reporter.log("请求地址" + url);
JSONObject param = new JSONObject();
param.put("name","zhangsan");
param.put("password","1234567");
Reporter.log("请求体" + param.toString());
String result = HttpUtils.doPost(url, param.toString());
Reporter.log("请求结果" + result);
Assert.assertEquals(result, "{\"msg\":\"success\",\"status\":1011,\"token\":\"YYYYYYYYYYYYYYYYYYYYYYYY\"}");
} }
 package com.testng.cases;

 import com.testng.utils.HttpUtils;
import com.testng.utils.ReadConfig;
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test; import java.io.IOException; public class DoGetTest { @Test(description = "成功的案例")
public void getTest() throws IOException {
String uri = ReadConfig.URI + ReadConfig.GET_PATH1;
String param = "name=zhangsan&password=123456";
String url = uri + param;
Reporter.log("请求地址" + url);
String result = HttpUtils.doGet(url);
Reporter.log("请求结果" + result);
Assert.assertEquals(result, "{\"msg\":\"success\",\"status\":1011,\"token\":\"XXXXXXXXXXXXXXXX\"}");
} @Test(description = "失败的案例")
public void getTest2() throws IOException {
String uri = ReadConfig.URI + ReadConfig.GET_PATH2;
String param = "name=zhangsan&password=1234567";
String url = uri + param;
Reporter.log("请求地址" + url);
String result = HttpUtils.doGet(url);
Reporter.log("请求结果" + result);
Assert.assertEquals(result, "{\"msg\":\"success\",\"status\":1011,\"token\":\"AAAAAAAAAAAAAAAAAAAAAAAA\"}");
}
}

testng.xml

 <?xml version="1.0" encoding="utf-8" ?>
<suite name="your suite name">
<test name="your test name1">
<classes>
<class name="com.testng.cases.DoGetTest"/>
<class name="com.testng.cases.DoPostTest"/>
</classes>
</test> <listeners>
<listener class-name="com.testng.config.ExtentTestNGIReporterListener"/>
</listeners> </suite>

运行testng.xml 后得到测试报告

Java接口自动化测试之HTTPClient学习(四)的更多相关文章

  1. Java接口自动化测试之TestNG学习(二)

    在maven项目的pom.xml文件中导入TestNG <?xml version="1.0" encoding="UTF-8"?> <pro ...

  2. java 接口自动化测试之数据请求的简单封装

    我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进 ...

  3. Java接口自动化测试之集成MyBatis和MySQL (五)

    pom.xml新增dependency <dependency> <groupId>org.mybatis</groupId> <artifactId> ...

  4. Java接口自动化测试之TestNG测试报告ExtentReports的应用(三)

    pom.xml导入包 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  5. 【转】JAVA接口自动化测试之一个测试方法对应多条测试数据的实现方式

    一.痛点:一条测试数据对应一个测试方法 前面的章节中我们已经写代码实现了登录接口的处理调用,但是一个接口往往是需要多条测试用例才能完整的覆盖到每一种情况. 针对于单接口多条测试用例需要执行的情况,该如 ...

  6. Java接口自动化测试之Maven项目的创建(一)

    这里使用Idea创建Maven项目, 过程非常简单, 装好JDK和Idea 1. 安装完后,打开Idea, 选择File→New→Project, 如图 2. 选择maven, 点击Next, 如图 ...

  7. Android自动化测试之Monkeyrunner学习笔记(一)

    Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyr ...

  8. 接口自动化:HttpClient + TestNG + Java(二) - 第一个接口测试:get请求

    在上一篇中,我们搭建好了HttpClient + TestNG + Java的自动化接口测试环境,这一篇我们就赶紧开始编写我们的第一个接口测试用例. 本篇会对问题解决的思路进行更详尽的阐述. 2.1 ...

  9. 接口自动化:HttpClient + TestNG + Java(一) - 接口测试概述+自动化环境搭建

    1.1 接口测试简介 1.1.1 什么是接口测试 开始学习接口自动化测试之前,我们先要来了解什么是接口,以及什么是接口测试. 我们都知道,测试从级别上划分可以分为 组件测试 集成测试 系统测试 验收测 ...

随机推荐

  1. thymeleaf资源加载问题(从Controller跳转)

    <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <me ...

  2. SFTP远程连接服务器上传下载文件-vs2010项目实例

    本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,vs2010 vs2010项目实例下载地址:CSDN下载 如果没有CSDN积分,百度网盘下载(密码 ...

  3. Jquery的一些常见用法

    谨以此文怀念我们大学的时光,Jquery3.4.0下载 https://code.jquery.com/jquery-3.4.0.min.js ⒈常用方法 $("#div1").h ...

  4. SpringBoot设置Session失效时间

    1 #Session超时时间设置,单位是秒,默认是30分钟 2 server.session.timeout=10 然而并没有什么用,因为SpringBoot在TomcatServletWebServ ...

  5. 【ARTS】01_17_左耳听风-20190304~20190310

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  6. 负载均衡获得真实源IP的6种方法 【转】

    除了X-FORWARD-FOR,负载均衡中获得真实源IP的方法还有很多种, 本文抛砖引玉,主要介绍获得真实源IP的多种方法,而不是具体配置, 负载均衡获得真实IP的方法有很多种,将形成专题文章, 本文 ...

  7. asyncio Queue的使用例子

    import aiohttp import asyncio import async_timeout from urllib.parse import urljoin, urldefrag root_ ...

  8. WCF之endpoint的binding属性

    最近在回顾之前做的wcf项目时,发现这个binding的属性有BasicHttpBinding,WSHttpBinding,webHttpBinding等几种方式.但是其中的区别当时未深入研究.现在网 ...

  9. 构建高性能WEB站点之 吞吐率、吞吐量、TPS、性能测试

    内容参考: 构建高性能WEB站点.pdf 一.吞吐率 我们一般使用单位时间内服务器处理的请求数来描述其并发处理能力.称之为吞吐率(Throughput),单位是 “req/s”.吞吐率特指Web服务器 ...

  10. git与eclipse集成之添加.gitignore文件

    1.1. 添加.gitignore文件 .gitignore 配置文件用于配置不需要加入版本管理的文件 1.以斜杠/开头表示目录: 2.以星号*通配多个字符: 3.以问号?通配单个字符 4.以方括号[ ...