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. Xilinx原语学习之时钟资源相关原语

    一直来,都是使用Vivado中自带的GMIItoRGMII IP核来完成GMII转RGMII的功能:尽管对GMII及RGMII协议都有一定的了解,但从没用代码实现过其功能.由于使用IP时,会涉及到MD ...

  2. ubuntu14.04上引入thinkphp5类库遇到的一个问题

    ubuntu14.04 上加载OSS\OssClient() ;--->在vendor文件夹下的文件要用大写OSS 小写的报错 无法加载类库 Vendor('OSS.autoload');//引 ...

  3. 视觉SLAM之词袋(bag of words) 模型与K-means聚类算法浅析

    原文地址:http://www.cnblogs.com/zjiaxing/p/5548265.html 在目前实际的视觉SLAM中,闭环检测多采用DBOW2模型https://github.com/d ...

  4. hibernate框架学习之对象状态

    lHibernate对象共有三种状态 •瞬时状态:瞬时对象 •持久化状态:持久化对象 •托管状态:托管对象 l瞬时对象(Transient Object),简称TO l瞬时对象指的是应用程序创建出来的 ...

  5. codeforces 412div.2

        A CodeForces 807A Is it rated?     B CodeForces 807B T-Shirt Hunt     C CodeForces 807C Success ...

  6. matlab积分使用

    clc; %清屏 clear; %清除变量 close all; %关闭 syms x; f(x) = x; df = int(f(x),x);%求不定积分 figure; subplot(1,2,1 ...

  7. golang esl api

    通过ESL 调取FS的状态,比如show calls : 用golang  eventsocket 实现 conn, err := eventsocket.Dial("192.168.5.3 ...

  8. CF 189A Cut Ribbon

    #include<bits/stdc++.h> using namespace std; const int maxn = 4000 + 131; int n, a, b, c; int ...

  9. Codeforces 576E Painting Edges [分治,并查集]

    洛谷 Codeforces 建议阅读这篇博客作为预备.无耻地打广告 思路 与bzoj4025很相似,思路也差不多,可以看上面那篇博客. 仍然是用二分图的充要条件:没有奇环. 然而这题难在每条边的存在时 ...

  10. hibernate入门程序

    快速入门       1. 下载Hibernate框架的开发包       2. 编写数据库和表结构 Create database hibernate_day01; Use hibernate_da ...