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

摘要:
test.get.path2=/getDemoWithCookie?

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.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");


}
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接口自动化测试之HTTPClient学习(四)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于default的位置问题:default放在前面Notepad++设置为系统全局文本默认打开应用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

easyexcel导出两种方式response返回文件流下载和保存到服务器返回下载链接

1、response方式返回excel文件流 @GetMapping("/exportExcel") public void exportExcel(@RequestParam(value = "menu") String menu, @RequestParam(value = "dwflgl...

java 实现导出excel报表

1.场景描述   使用java实现导出excel报表。使用Apache POI。   Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 2.Maven依赖 <dependency> <groupId>org.apache.poi&l...

Java导出成可运行Jar包 dll或者so加载失败的解决方案

正常情况下, xxx.class.getResourceAsStream(lib) 这样就可以获取到了。但是我的是在JFrame的初始化中的, 所以需要Thread.currentThread().getContextClassLoader().getResourceAsStream(lib); 这样来获取。   这个坑  找了蛮久才找到解决方案记录下。...

使用JDBC进行简单的增删改查

JDBC为java的基础。用jdbc实现对数据库的增删改查的功能是程序员的基本要求。本例以mysql为例,首先要使用本例需要添加mysql-connector-java-5.1.7-bin.jar包。专门用来加载jdbc的驱动。如果数据库为oracle,相应的jar包换为ojdbc6.jar。 通过下面的代码可以练习一下,掌握jdbc的使用方法,自己可以对...

java与json互相转换(解决日期问题)

JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文主要讲解下java和JSON之间的转换,特别是解决互相转换遇到日期问题的情况。 一、需要相关的jar包: json-lib-xxx.jar ezmorph-xxx.jar c...

Java学习:JDBC各类详解

 JDBC各个类详解 代码实现: //1.导入驱动jar包 //2.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //3.获取数据库连对象 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root",...