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


    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 后得到测试报告

  • 相关阅读:
    网络字节序与主机字节序
    Maven2插件开发详解
    NetBeans 时事通讯(刊号 # 30 Oct 15, 2008)
    NetBeans 时事通讯(刊号 # 30 Oct 15, 2008)
    Grsync:rsync 的图形化界面
    Windows Socket网络编程学习笔记一
    如何调试MFC中的内存泄漏
    内存池(MemPool)技术详解
    These codes are How to use Lucence.net
    VC控制台程序的文字颜色
  • 原文地址:https://www.cnblogs.com/wsy0202/p/11842681.html
Copyright © 2020-2023  润新知