HttpClient之接口测试:
首先,用Maven来构建第三方依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
1、先是GET请求:
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.IOException;
public class LoginHomepage {
@Test(dataProvider = "homepage") //打开3个首页的接口测试用例
public void loginHomepage(String case_1, String url, String assert_1) throws IOException {
CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建默认的httpClient实例
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(20000).setConnectionRequestTimeout
(15000).setSocketTimeout(20000).build(); //设置连接超时时间和获取数据超时时间
HttpGet httpget = new HttpGet(url); //创建GET方法的实例,并传入待连接的地址
httpget.setConfig(requestConfig);
httpget.addHeader("content-type", "application/x-www-form-urlencoded; charset=UTF-8");
//设置请求头
CloseableHttpResponse response = httpclient.execute(httpget);
// 执行get请求,调用第一步中创建好的实例的execute方法来执行第二步中创建好的method实例
HttpEntity entity = response.getEntity(); // 读response,获取响应实体
String getResult = EntityUtils.toString(entity, "UTF-8");//读入内容流,并以字符串形式返回
getResult = getResult.replaceAll("[^\\u4e00-\\u9fa5]", "");//只匹配汉字
if (getResult != null) {
System.out.println(case_1);
System.out.println("接口响应:" + getResult + "\n"); // 打印响应内容
EntityUtils.consume(entity);//关闭内容流
}
httpclient.close(); //关闭连接
Assert.assertEquals(assert_1, getResult); //断言
Reporter.log(case_1); //输出报告
}
@DataProvider(name = "homepage") //将数据集合命名为"homepage"
public static Object[][] words() throws IOException {
return ReadExcel.getTestData("src/main/resources/", "interface_homepage.xlsx",
"Sheet1");
//调用静态方法getTestData,获取Excel文件的测试数据
}
}
现在跑一把:"C:\Program Files\Java\jdk1.8.0_31\bin\java"
成功打开公会登录页的接口
接口响应:登录欢迎使用直播助手手机号手机密码密码登录注册通行证忘记密码其他登录方式登录微信登录微博登录
成功打开主播登录页的接口
接口响应:登录欢迎使用直播助手手机号手机密码密码登录注册通行证忘记密码其他登录方式登录微信登录微博登录
成功打开公会后台的接口
接口响应:统计数据统计数据统计数据用户名密码用户名或密码错误登陆
===============================================
Default Suite
Total tests run: 3, Failures: 0, Skips: 0
===============================================
Process finished with exit code 0
这是Excel配置文件:
测试用例 | URL | 断言 |
成功打开公会登录页的接口用例 | http://xxx.xxx.com/ | 登录欢迎使用直播助手手机号手机密码密码登录注册通行证忘记密码其他登录方式登录微信登录微博登录 |
成功打开主播登录页的接口用例 | http://yyy.yyy.com/ | 登录欢迎使用直播助手手机号手机密码密码登录注册通行证忘记密码其他登录方式登录微信登录微博登录 |
成功打开公会后台的接口用例 | http://zzz.zzz.com/admin/index | 统计数据统计数据统计数据用户名密码用户名或密码错误登陆 |
2、再是POST请求:
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Login_Houtai {
@Test(dataProvider = "loginHoutai") //登录后台的接口测试用例
public void loginHoutai(String case_1, String url, String name, String password, String assert_1) throws
IOException {
CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建默认的httpClient实例
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(20000).setConnectionRequestTimeout
(15000).setSocketTimeout(20000).build(); //设置连接超时时间和获取数据超时时间
HttpPost httppost = new HttpPost(url); //创建Post请求的实例,并传入待连接的地址
httppost.setConfig(requestConfig);
httppost.addHeader("content-type", "application/x-www-form-urlencoded; charset=UTF-8");
//设置请求头
List<NameValuePair> formparams1 = new ArrayList<NameValuePair>(); //创建Post请求参数队列
//表单中的域用类NameValuePair来表示,该类的构造函数第一个参数是域名,第二参数是该域的值;
formparams1.add(new BasicNameValuePair("username", name));
formparams1.add(new BasicNameValuePair("pwd", password));
httppost.setEntity(new UrlEncodedFormEntity(formparams1, "UTF-8"));//设置表单的编码格式
HttpResponse response = httpclient.execute(httppost);
// 执行post请求,调用第一步中创建好的实例的execute方法来执行第二步中创建好的method实例
HttpEntity entity = response.getEntity(); // 读response,获取响应实体
String postResult = EntityUtils.toString(entity, "UTF-8");//读入内容流,并以字符串形式返回
String responses = StringEscapeUtils.unescapeJava(postResult); //把Unicode编码转中文
responses = responses.replaceAll("[^\\u4e00-\\u9fa5\\,]", "");//匹配汉字和逗号
if (responses != null) {
System.out.println(case_1);
System.out.println("接口响应:" + responses + "\n"); // 打印响应内容
EntityUtils.consume(entity);//关闭内容流
}
httpclient.close(); //关闭连接
Assert.assertEquals(assert_1, responses); //断言
Reporter.log(case_1); //输出报告
}
@DataProvider(name = "loginHoutai") //将数据集合命名为"loginHoutai"
public static Object[][] words() throws IOException {
return ReadExcel.getTestData("src/main/resources/", "interface_houtai.xlsx",
"Sheet1");
//调用静态方法getTestData,获取Excel文件的测试数据
}
}
现在跑一把:"C:\Program Files\Java\jdk1.8.0_31\bin\java"
成功的登录后台的接口
接口响应:登陆成功
密码错误的登录后台的接口
接口响应:登陆失败,密码错误
用户名错误的登录后台的接口
接口响应:登陆失败,用户不存在
用户名和密码都错误的登录后台的接口
接口响应:登陆失败,用户不存在
用户名为空的登录后台的接口
接口响应:登陆失败,用户密码不能为空
密码为空的登录后台的接口
接口响应:登陆失败,用户密码不能为空
===============================================
Default Suite
Total tests run: 6, Failures: 0, Skips: 0
===============================================
Process finished with exit code 0
这是Excel配置文件:
测试用例 | URL | 用户名 | 密码 | 断言 |
成功的登录后台的接口用例 | http://zzz.zzz.com/admin/login_do?ajaxtime=1504765704971 | admin | 123456 | 登陆成功 |
密码错误的登录后台的接口用例 | http://zzz.zzz.com/admin/login_do?ajaxtime=1504765704971 | admin | 1 | 登陆失败,密码错误 |
用户名错误的登录后台的接口用例 | http://zzz.zzz.com/admin/login_do?ajaxtime=1504765704971 | a | 123456 | 登陆失败,用户不存在 |
用户名和密码都错误的登录后台的接口用例 | http://zzz.zzz.com/admin/login_do?ajaxtime=1504765704971 | a | 1 | 登陆失败,用户不存在 |
用户名为空的登录后台的接口用例 | http://zzz.zzz.com/admin/login_do?ajaxtime=1504765704971 | 123456 | 登陆失败,用户密码不能为空 | |
密码为空的登录后台的接口用例 | http://zzz.zzz.com/admin/login_do?ajaxtime=1504765704971 | admin | 登陆失败,用户密码不能为空 |