Java接口自动化测试之HTTPClient学习(四)

pom.xml  文件中dependency

 1 <dependencies>
 2         <dependency>
 3             <groupId>org.testng</groupId>
 4             <artifactId>testng</artifactId>
 5             <version>6.14.3</version>
 6         </dependency>
 7         <dependency>
 8             <groupId>com.relevantcodes</groupId>
 9             <artifactId>extentreports</artifactId>
10             <version>2.41.1</version>
11         </dependency>
12         <dependency>
13             <groupId>com.vimalselvam</groupId>
14             <artifactId>testng-extentsreport</artifactId>
15             <version>1.3.1</version>
16         </dependency>
17         <dependency>
18             <groupId>com.aventstack</groupId>
19             <artifactId>extentreports</artifactId>
20             <version>3.0.6</version>
21         </dependency>
22         <dependency>
23             <groupId>org.apache.httpcomponents</groupId>
24             <artifactId>httpclient</artifactId>
25             <version>4.1.2</version>
26         </dependency>
27         <dependency>
28             <groupId>com.alibaba</groupId>
29             <artifactId>fastjson</artifactId>
30             <version>1.2.47</version>
31             <scope>compile</scope>
32         </dependency>
33         <dependency>
34             <groupId>org.projectlombok</groupId>
35             <artifactId>lombok</artifactId>
36             <version>1.16.14</version>
37         </dependency>
38     </dependencies>

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

 1 # 请求URL
 2 test.uri=http://localhost:8889
 3 test.post.path1=/postDemo
 4 test.post.path2=/postDemoWithCookie
 5 test.get.path1=/getDemo?
 6 test.get.path2=/getDemoWithCookie?
 7
 8 # 请求头信息
 9 header.accept=*/*
10 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
11 header.content.type=application/json;charset=utf-8
12 header.accept.charset=utf-8
13 header.cookie=login=true

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

 1 package com.testng.utils;
 2
 3 import org.apache.http.client.methods.HttpGet;
 4 import org.apache.http.client.methods.HttpPost;
 5 import org.apache.http.client.methods.HttpRequestBase;
 6 import org.apache.http.entity.StringEntity;
 7 import org.apache.http.impl.client.DefaultHttpClient;
 8 import org.apache.http.util.EntityUtils;
 9
10 import java.io.IOException;
11
12 public class HttpUtils {
13
14     private static DefaultHttpClient defaultHttpClient = null;
15
16     public static String doGet(String url) throws IOException {
17         String result;
18         defaultHttpClient = new DefaultHttpClient();
19         HttpGet get = new HttpGet(url);
20         setHeader(get);
21         result = EntityUtils.toString(defaultHttpClient.execute(get).getEntity(), "utf-8");
22         return result;
23     }
24
25     public static String doPost(String url, String data) throws IOException {
26         String result;
27         HttpPost post = new HttpPost(url);
28         setHeader(post);
29         post.setEntity(new StringEntity(data, "utf-8"));
30         defaultHttpClient = new DefaultHttpClient();
31         result = EntityUtils.toString(defaultHttpClient.execute(post).getEntity(), "utf-8");
32         return result;
33     }
34
35     private static void setHeader(HttpRequestBase httpRequestBase) {
36         httpRequestBase.setHeader("Accept", ReadConfig.ACCEPT);
37         httpRequestBase.setHeader("User-Agent", ReadConfig.USER_AGENT);
38         httpRequestBase.setHeader("Content-Type", ReadConfig.CONTENT_TYPE);
39         httpRequestBase.setHeader("Accept-Charset", ReadConfig.ACCEPT_CHARSET);
40         httpRequestBase.setHeader("Cookie", ReadConfig.COOKIE);
41     }
42
43 }
 1 package com.testng.utils;
 2
 3 import lombok.Data;
 4
 5 import java.util.Locale;
 6 import java.util.ResourceBundle;
 7
 8 @Data
 9 public class ReadConfig {
10
11     private static ResourceBundle bundle = ResourceBundle.getBundle("application", Locale.CHINA);
12
13     public static String ACCEPT = bundle.getString("header.accept");
14     public static String USER_AGENT = bundle.getString("header.user.agent");
15     public static String CONTENT_TYPE = bundle.getString("header.content.type");
16     public static String ACCEPT_CHARSET = bundle.getString("header.accept.charset");
17     public static String COOKIE = bundle.getString("header.cookie");
18     public static String URI = bundle.getString("test.uri");
19     public static String POST_PATH1 = bundle.getString("test.post.path1");
20     public static String POST_PATH2 = bundle.getString("test.post.path2");
21     public static String GET_PATH1 = bundle.getString("test.get.path1");
22     public static String GET_PATH2 = bundle.getString("test.get.path2");
23
24
25 }

TestNG测试类

 1 package com.testng.cases;
 2
 3 import com.alibaba.fastjson.JSONObject;
 4 import com.testng.utils.HttpUtils;
 5 import com.testng.utils.ReadConfig;
 6
 7 import org.testng.Assert;
 8 import org.testng.Reporter;
 9 import org.testng.annotations.Test;
10
11 import java.io.IOException;
12
13 public class DoPostTest {
14
15     @Test
16     public void postTest() throws IOException {
17         String url = ReadConfig.URI + ReadConfig.POST_PATH1;
18         Reporter.log("请求地址" + url);
19         JSONObject param = new JSONObject();
20         param.put("name","zhangsan");
21         param.put("password","123456");
22         Reporter.log("请求体" + param.toString());
23         String result = HttpUtils.doPost(url, param.toString());
24         Reporter.log("请求结果" + result);
25         Assert.assertEquals(result, "{\"msg\":\"success\",\"status\":1011,\"token\":\"ZZZZZZZZZZZZZZZZZZZZZZ\"}");
26     }
27
28     @Test
29     public void postTest2() throws IOException {
30         String url = ReadConfig.URI + ReadConfig.POST_PATH2;
31         Reporter.log("请求地址" + url);
32         JSONObject param = new JSONObject();
33         param.put("name","zhangsan");
34         param.put("password","1234567");
35         Reporter.log("请求体" + param.toString());
36         String result = HttpUtils.doPost(url, param.toString());
37         Reporter.log("请求结果" + result);
38         Assert.assertEquals(result, "{\"msg\":\"success\",\"status\":1011,\"token\":\"YYYYYYYYYYYYYYYYYYYYYYYY\"}");
39     }
40
41 }
 1 package com.testng.cases;
 2
 3 import com.testng.utils.HttpUtils;
 4 import com.testng.utils.ReadConfig;
 5 import org.testng.Assert;
 6 import org.testng.Reporter;
 7 import org.testng.annotations.Test;
 8
 9 import java.io.IOException;
10
11 public class DoGetTest {
12
13     @Test(description = "成功的案例")
14     public void getTest() throws IOException {
15         String uri = ReadConfig.URI + ReadConfig.GET_PATH1;
16         String param = "name=zhangsan&password=123456";
17         String url = uri + param;
18         Reporter.log("请求地址" + url);
19         String result = HttpUtils.doGet(url);
20         Reporter.log("请求结果" + result);
21         Assert.assertEquals(result, "{\"msg\":\"success\",\"status\":1011,\"token\":\"XXXXXXXXXXXXXXXX\"}");
22     }
23
24     @Test(description = "失败的案例")
25     public void getTest2() throws IOException {
26         String uri = ReadConfig.URI + ReadConfig.GET_PATH2;
27         String param = "name=zhangsan&password=1234567";
28         String url = uri + param;
29         Reporter.log("请求地址" + url);
30         String result = HttpUtils.doGet(url);
31         Reporter.log("请求结果" + result);
32         Assert.assertEquals(result, "{\"msg\":\"success\",\"status\":1011,\"token\":\"AAAAAAAAAAAAAAAAAAAAAAAA\"}");
33     }
34 }

testng.xml

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <suite name="your suite name">
 3     <test name="your test name1">
 4         <classes>
 5             <class name="com.testng.cases.DoGetTest"/>
 6             <class name="com.testng.cases.DoPostTest"/>
 7         </classes>
 8     </test>
 9
10     <listeners>
11         <listener class-name="com.testng.config.ExtentTestNGIReporterListener"/>
12     </listeners>
13
14 </suite>

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

原文地址:https://www.cnblogs.com/andrew209/p/9163797.html

时间: 2024-10-30 08:21:28

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

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

我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进行了一个简单的封装. 如果是开发的话,比如APP开发,无论是iOS还是Android,是需要将数据请求进行十分严密的封装的,因为需要对各种网络状态,请求状态做相应的判断处理,因为需要通过这些判断来做出相应的UI交互界面来给用户提示,那么我们做接口测试的话是不需要这么严密的,因为测试的前提就是要保证测

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

pom.xml新增dependency 1 <dependency> 2 <groupId>org.mybatis</groupId> 3 <artifactId>mybatis</artifactId> 4 <version>3.4.4</version> 5 </dependency> 6 <dependency> 7 <groupId>mysql</groupId> 8

python接口自动化之openpyxl学习

python接口自动化之openpyxl学习 由于接口自动化测试需要用到python的第三方库--openpyxl库,运用openpyxl库可以进行exl的读和写,再结合unittest测试框架,就能进行接口自动化测试. 一:openpyxl库的安装:pip install openpyxl   二:查看openpyxl库的属性 import openpyxldir1= dir(openpyxl)print(dir1) ['DEFUSEDXML', 'LXML', 'NUMPY', 'PANDA

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

1.1 接口测试简介 1.1.1 什么是接口测试 开始学习接口自动化测试之前,我们先要来了解什么是接口,以及什么是接口测试. 我们都知道,测试从级别上划分可以分为 组件测试 集成测试 系统测试 验收测试 其中在集成测试这个阶段,一个最主要的测试活动就是接口测试.在组件测试中,我们对单个组件自身的功能性能等指标进行验证,上升到集成测试级别,我们则进一步去验证组件之间的交互和集成.而组件之间的交互,就是通过'接口'来达成的.所以一定程度上,集成测试和接口测试概念是大幅度重叠的.(就组件集成/接口测试

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

在上一篇中,我们搭建好了HttpClient + TestNG + Java的自动化接口测试环境,这一篇我们就赶紧开始编写我们的第一个接口测试用例. 本篇会对问题解决的思路进行更详尽的阐述. 2.1 确定被测接口 首先一个现实的问题,我们要有一个待测接口来验证我们自动化方案的可行性. 我们可以选择在自己的本地去部署一套待测接口,当然也可以选择公网上的接口去进行测试,这里我们选择后者. 我选定的是apishop这个站点:https://www.apishop.net/ 这个站点提供非常多,种类齐全

Selenium 自动化测试之道--学习总结-WebDriver

最近正在看Ping++测试团队编著的<Selenium 自动化测试之道>,非常非常好的一本书,不仅仅是工具的介绍使用,还有非常珍贵的实践总结,自己的公司也在做自动化,由于是基于B/S,要考虑到硬件环境,而且主要使用的是RobotFramework去构建自动化脚本验证系统的可靠性. 之前自己也学习过关于Selenium的知识,但是总感觉知识很零散,自己在网上搜了很长时间,买了这本书,发现自己还欠缺很多,很庆幸能读到这本书,下面开始一点点的搭建自己的知识框架. 一.工作原理 Selenium We

Android自动化测试之Monkeyrunner学习笔记(一)【转】

因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyrunner.Athrun.appium,目前仍在了解学习android测试框架.CTS等.本文主要为前段时间学习总结,由于刚接触不久,故本文难免会有些肤浅,大神请绕走~ [目录] 1.Monkeyrunner简介 2.Monkeyrunner工具特性 3.Monkeyrunner工具同Monkey工具的差别 4.运行Monkeyrunner 5.实例 6.学习笔记

python WEB接口自动化测试之requests库详解

1.Get请求 前提: requests库是python的第三方库,需要提前安装哦,可以直接用pip命令:`python –m pip install requests` 按照惯例,先将requests库的属性打印出来,看看哪些属性. >>> import requests >>> dir(requests) #查看requests库的属性 ['ConnectionError', 'HTTPError', 'NullHandler', 'PreparedRequest'

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

pom.xml导入包 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apach