精华内容
下载资源
问答
  • 主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,需要有一定的JAVA知识(HTTP相关)。
  • 这个接口自动化测试框架到目前为止,我们已经完成了Get请求的封装和必要的工具类的支持。...所以,这个Java接口自动化测试框架的核心就是Get和POST请求方法的封装过程。 1.POST接口举例浏览器打开https://re...

           这个接口自动化测试框架到目前为止,我们已经完成了Get请求的封装和必要的工具类的支持。接下来这篇,我来介绍如何完成POST请求的封装过程。一般来说,在一个项目中,接口测试很多时候就是测试Get和POST方法,其他的请求方式的接口很少,占的比重几乎不计。所以,这个Java接口自动化测试框架的核心就是Get和POST请求方法的封装过程。

     

    1.POST接口举例

    浏览器打开https://reqres.in/,下拉一屏。点击第一个POST请求,这个接口的介绍信息如下。

          这个接口的作用是创建用户,参数是一个json类型的数据,一个name一个job,两个JSON对象。发送请求之后,返回的JSON数据有name和job和id,以及创建时间这几个数据。

     

    2.Postman手动实现

     

    我们先在本地postman环境,先来手动测试实现下这个post接口的请求过程。

    这个post接口请求还是比较简单,很容易在postman上实现该请求。

     

    3.Java代码自动化实现

     

           我们已经可以正确地在postman上实现创建用户这个接口的手动测试,那么我们想要这个过程自动化实现,如何做呢。下面我在RestClient.java封装了两个方法,一个是带请求头信息的Get请求,一个是带请求头信息的POST请求方法。这篇,了解了POST请求方法,带请求头的Get方法封装就很好理解。

    package com.qa.restclient;
    
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    
    public class RestClient {
        
        
        //1. Get 请求方法
        public CloseableHttpResponse get(String url) throws ClientProtocolException, IOException {
            
            //创建一个可关闭的HttpClient对象
            CloseableHttpClient httpclient = HttpClients.createDefault();
            //创建一个HttpGet的请求对象
            HttpGet httpget = new HttpGet(url);
            //执行请求,相当于postman上点击发送按钮,然后赋值给HttpResponse对象接收
            CloseableHttpResponse httpResponse = httpclient.execute(httpget);
            
            return httpResponse;
        }
        
        //2. Get 请求方法(带请求头信息)
        public CloseableHttpResponse get(String url,HashMap<String,String> headermap) throws ClientProtocolException, IOException {
                
            //创建一个可关闭的HttpClient对象
            CloseableHttpClient httpclient = HttpClients.createDefault();
            //创建一个HttpGet的请求对象
            HttpGet httpget = new HttpGet(url);
            //加载请求头到httpget对象
            for(Map.Entry<String, String> entry : headermap.entrySet()) {
                httpget.addHeader(entry.getKey(), entry.getValue());
            }
            //执行请求,相当于postman上点击发送按钮,然后赋值给HttpResponse对象接收
            CloseableHttpResponse httpResponse = httpclient.execute(httpget);
                
            return httpResponse;
        }
        
        //3. POST方法
        public CloseableHttpResponse post(String url, String entityString, HashMap<String,String> headermap) throws ClientProtocolException, IOException {
            //创建一个可关闭的HttpClient对象
            CloseableHttpClient httpclient = HttpClients.createDefault();
            //创建一个HttpPost的请求对象
            HttpPost httppost = new HttpPost(url);
            //设置payload
            httppost.setEntity(new StringEntity(entityString));
            
            //加载请求头到httppost对象
            for(Map.Entry<String, String> entry : headermap.entrySet()) {
                httppost.addHeader(entry.getKey(), entry.getValue());
            }
            //发送post请求
            CloseableHttpResponse httpResponse = httpclient.execute(httppost);
            return httpResponse;
        }
        
        
    }
    
    
    

          然后,我们需要写一个TestNG测试用例来测试下这个封装的post方法好不好用。由于我们去前面几篇文章介绍了TestNG测试get方法的代码,这里我们就直接拷贝和修改部分代码就行。

          在写测试用例之前,我们需要提前准备好json数据,一般来说,在Java中JSON数据都是放在JAVA Bean类中,通过JSON把高级对象序列化成JSON对象。

          在src/main/java中新建包:com.qa.data,然后新建一个Users.java,这个命名就参考接口的url单词就行。在postman或者网站该post方法,我们知道,需要name和job这两个json对象。我们新建一个bean类,同alt+shift+s,然后选择生成构造方法和set和get方法。

    package com.qa.data;
    
    public class Users {
    
    	private String name;
    	private String job;
    	
    	public Users() {
    		super();
    	}
    
    	public Users(String name, String job) {
    		super();
    		this.name = name;
    		this.job = job;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getJob() {
    		return job;
    	}
    
    	public void setJob(String job) {
    		this.job = job;
    	}
    	
    }
    

         好了,在src/test/java下的com.qa.tests我们新建一个POST测试用例,现在我们的TestNG测试类代码如下:

    package com.qa.tests;
    
    import java.io.IOException;
    import java.util.HashMap;
    
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.util.EntityUtils;
    import org.testng.Assert;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.Test;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.qa.base.TestBase;
    import com.qa.data.Users;
    import com.qa.restclient.RestClient;
    import com.qa.util.TestUtil;
    
    public class PostApiTest extends TestBase {
    	TestBase testBase;
    	String host;
    	String url;
    	RestClient restClient;
    	CloseableHttpResponse closeableHttpResponse;
    	
    	
    	@BeforeClass
    	public void setUp() {
    		testBase = new TestBase();
    		host = prop.getProperty("HOST");
    		url = host + "/api/users";
    		
    	}
    	
    	@Test
    	public void postApiTest() throws ClientProtocolException, IOException {
    		restClient = new RestClient();
    		//准备请求头信息
    		HashMap<String,String> headermap = new HashMap<String,String>();
    		headermap.put("Content-Type", "application/json"); //这个在postman中可以查询到
    		
    		//对象转换成Json字符串
    		Users user = new Users("Anthony","tester");
    		String userJsonString = JSON.toJSONString(user);
    		//System.out.println(userJsonString);
    		
    		closeableHttpResponse = restClient.post(url, userJsonString, headermap);
    		
    		//验证状态码是不是200
    		int statusCode = closeableHttpResponse.getStatusLine().getStatusCode();
    		Assert.assertEquals(statusCode, RESPNSE_STATUS_CODE_201,"status code is not 201");
    		
    		//断言响应json内容中name和job是不是期待结果
    		String responseString = EntityUtils.toString(closeableHttpResponse.getEntity());
    		JSONObject responseJson = JSON.parseObject(responseString);
    		//System.out.println(responseString);
    		String name = TestUtil.getValueByJPath(responseJson, "name");
    		String job = TestUtil.getValueByJPath(responseJson, "job");
    		Assert.assertEquals(name, "Anthony","name is not same");
    		Assert.assertEquals(job, "tester","job is not same");
    		
    	}
    
    }
    

          建议,在写测试用例过程中,需要和postman上的请求结果参考,特别是Headers这里的键值对。这里留一个作业,上面我写了一个Get带请求头的封装方法,你可以对照postman中的请求头去写一个单元测试用例去测试下这个带headers的Get方法。

           目前,Java接口自动化测试框架的核心部分,http请求方法的封装已经完成。接下里还有测试日志,测试报告,或者其他需要抽取优化的模块去完成。




    展开全文
  • 这个接口自动化测试框架到目前为止,我们已经完成了Get请求的封装和必要的工具类的支持。...所以,这个Java接口自动化测试框架的核心就是Get和POST请求方法的封装过程。   1.POST接口举例 浏览器打开https://req...

    这个接口自动化测试框架到目前为止,我们已经完成了Get请求的封装和必要的工具类的支持。接下来这篇,我来介绍如何完成POST请求的封装过程。一般来说,在一个项目中,接口测试很多时候就是测试Get和POST方法,其他的请求方式的接口很少,占的比重几乎不计。所以,这个Java接口自动化测试框架的核心就是Get和POST请求方法的封装过程。

     

    1.POST接口举例

    浏览器打开https://reqres.in/,下拉一屏。点击第一个POST请求,这个接口的介绍信息如下。

          这个接口的作用是创建用户,参数是一个json类型的数据,一个name一个job,两个JSON对象。发送请求之后,返回的JSON数据有name和job和id,以及创建时间这几个数据。

     

    2.Postman手动实现

     

    我们先在本地postman环境,先来手动测试实现下这个post接口的请求过程。

    这个post接口请求还是比较简单,很容易在postman上实现该请求。

     

    3.Java代码自动化实现

     

           我们已经可以正确地在postman上实现创建用户这个接口的手动测试,那么我们想要这个过程自动化实现,如何做呢。下面我在RestClient.java封装了两个方法,一个是带请求头信息的Get请求,一个是带请求头信息的POST请求方法。这篇,了解了POST请求方法,带请求头的Get方法封装就很好理解。

    package com.qa.restclient;
    
    
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    
    
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    
    public class RestClient {
    
        //重构后Get方法:
        public CloseableHttpResponse get(String url) throws ClientProtocolException,IOException{
            //创建一个可关闭的HttpClient对象
            CloseableHttpClient httpclient=HttpClients.createDefault();
            //创建一个HttpGet的请求对象
            HttpGet httpget=new HttpGet(url);
            //执行请求,相当于jmeter上点击运行按钮,然后赋值给HttpResponse对象接收
            CloseableHttpResponse httpResponse=httpclient.execute(httpget);
    
            return httpResponse;
    
        }
        //2. Get 请求方法(带请求头信息)
        public CloseableHttpResponse get(String url, HashMap<String,String> headermap) throws ClientProtocolException, IOException{
            //创建一个可关闭的HttpClient对象
            CloseableHttpClient httpclient=HttpClients.createDefault();
            //创建一个HttpGet的请求对象
            HttpGet httpget=new HttpGet(url);
    
            //加载请求头到httpget对象
            for(Map.Entry<String,String> entry:headermap.entrySet()){
                httpget.addHeader(entry.getKey(),entry.getValue());
            }
            //执行请求,相当于postman上点击发送按钮,然后赋值给HttpResponse对象接收
            CloseableHttpResponse httpResponse=httpclient.execute(httpget);
            return httpResponse;
    
        }
    
        //3. POST方法
        public CloseableHttpResponse post(String url,String entityString,HashMap<String,String> headermap) throws ClientProtocolException, IOException{
            //创建一个可关闭的HttpClient对象
            CloseableHttpClient httpclient=HttpClients.createDefault();
            //创建一个HttpPost的请求对象
            HttpPost httppost=new HttpPost(url);
            //设置请求参数,post请求的body部分;setEntity(),()中是一个httpEntity;get请求没有body部分,请求参数都在header中所以没用setEntity()这个方法
            httppost.setEntity(new StringEntity(entityString));
            //加载请求头到httppost对象,post请求的头部分,如果报文格式是json还是xml等
            for(Map.Entry<String,String> entry:headermap.entrySet()){
                httppost.addHeader(entry.getKey(),entry.getValue());
            }
            //发送post请求
            CloseableHttpResponse httpResponse=httpclient.execute(httppost);
            return httpResponse;
    
        }
    
    }
    

        然后,我们需要写一个TestNG测试用例来测试下这个封装的post方法好不好用。由于我们去前面几篇文章介绍了TestNG测试get方法的代码,这里我们就直接拷贝和修改部分代码就行。

          在写测试用例之前,我们需要提前准备好json数据,一般来说,在Java中JSON数据都是放在JAVA Bean类中,通过JSON把高级对象序列化成JSON对象。

          在src/main/java中新建包:com.qa.data,然后新建一个Users.java,这个命名就参考接口的url单词就行。在postman或者网站该post方法,我们知道,需要name和job这两个json对象。我们新建一个bean类,同alt+shift+s,然后选择生成构造方法和set和get方法。

    package com.qa.data;
     
    public class Users {
     
    	private String name;
    	private String job;
    	
    	public Users() {
    		super();
    	}
     
    	public Users(String name, String job) {
    		super();
    		this.name = name;
    		this.job = job;
    	}
     
    	public String getName() {
    		return name;
    	}
     
    	public void setName(String name) {
    		this.name = name;
    	}
     
    	public String getJob() {
    		return job;
    	}
     
    	public void setJob(String job) {
    		this.job = job;
    	}
    	
    }

         好了,在src/test/java下的com.qa.tests我们新建一个POST测试用例,现在我们的TestNG测试类代码如下:

    ​
    package com.qa.tests;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.qa.base.TestBase;
    import com.qa.data.Users;
    import com.qa.restclient.RestClient;
    import com.qa.util.TestUtil;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.util.EntityUtils;
    import org.testng.Assert;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.Test;
    
    import java.io.IOException;
    import java.util.HashMap;
    
    public class PostApiTest extends TestBase {
        TestBase testBase;
        String host;
        String url;
        RestClient restClient;
        CloseableHttpResponse closeableHttpResponse;
    
        @BeforeClass
        public void setUp(){
            testBase=new TestBase();
            host=prop.getProperty("HOST");
            url=host+"/api/users";
        }
    
        @Test
        public void postApiTest() throws ClientProtocolException, IOException {
            restClient=new RestClient();
    
            HashMap<String,String> headermap=new HashMap<String,String>();
    
            headermap.put("Content-Type","application/json");
            Users user=new Users("navy","tester");
            String userJsonString= JSON.toJSONString(user);
    
            closeableHttpResponse=restClient.post(url,userJsonString,headermap);
    
            int statusCode=closeableHttpResponse.getStatusLine().getStatusCode();
            Assert.assertEquals(statusCode,RESPONSE_STATUS_CODE_201,"stutus code is not 201");
    
            String responseString= EntityUtils.toString(closeableHttpResponse.getEntity());
            JSONObject responseJson=JSON.parseObject(responseString);
    
            String name= TestUtil.getValueByJPath(responseJson,"name");
            String job=TestUtil.getValueByJPath(responseJson,"job");
            Assert.assertEquals(name,"navy","name is not same");
            Assert.assertEquals(job,"tester","job is not same");
    
        }
    }
    
    ​

          建议,在写测试用例过程中,需要和postman上的请求结果参考,特别是Headers这里的键值对。这里留一个作业,上面我写了一个Get带请求头的封装方法,你可以对照postman中的请求头去写一个单元测试用例去测试下这个带headers的Get方法。

           目前,Java接口自动化测试框架的核心部分,http请求方法的封装已经完成。接下里还有测试日志,测试报告,或者其他需要抽取优化的模块去完成。

    参考博文:

    https://blog.csdn.net/u011541946/article/details/80413667

    展开全文
  • Java接口自动化测试框架设计-2-Get请求方法和测试

    万次阅读 多人点赞 2018-05-22 00:11:42
    这篇开始,我来介绍通过代码逐步实现接口自动化测试框架的设计过程。先不要着急,框架设计我们只是介绍基本的组件,而且框架设计没有想象那么难,一步一步跟着做就会了。这篇我们来演示,如果通过Java代码来实现一个...

          这篇开始,我来介绍通过代码逐步实现接口自动化测试框架的设计过程。先不要着急,框架设计我们只是介绍基本的组件,而且框架设计没有想象那么难,一步一步跟着做就会了。这篇我们来演示,如果通过Java代码来实现一个用纯代码实现Http中的Get请求过程。

     

    1.Get请求API举例

          浏览器打开网址https://reqres.in,然后下拉一屏,我们就可以看到这个网站的API举例,我们来看看显示用户的get接口。


    通过这个图,我们能够获取这些信息

    1)网站host地址:https://reqres.in/

    2)用户展示请求方式是: Get

    3)接口的url 是: /api/users

    4)接口的响应状态码是200,还可以看到响应body的JSON内容。

     

           获取上面这些接口信息之后,我们在本地postman上来测试一下,如果没有postman请安装一个和postman差不多的能做接口手工测试的图形化界面工具,例如jmeter等。


          这个接口,我们通过postman手动测试,发现和网站提供的是一样结果,说明这get请求的接口测试通过。那么如果我们想通过Java代码实现,需要怎么做呢?接下来,才是本篇的重点内容。

     

    2.代码过程

          前面一篇文章,我们介绍了基础环境的搭建过程,这里,接着前面的环境来逐步完成一个Get请求的设计和测试过程。

    2.1 设计配置文件

          我们这个序列是要教会大家设计接口自动化测试框架的目的,所以我们一些设计和组织项目结构的方式,需要参考框架的思维。写一个配置文件,很简单,意义就是方便测试多套环境下的接口测试。我们工作中,一个项目,分测试环境,预发布环境和线上生产环境,这三套环境,接口肯定是一样,只不过服务器地址不同,所以,我们框架设计需要支持写一套接口测试用例,在三套环境上可以跑得同。

        在src/main/java下新建一个包:com.qa.config,然后在新包下新建一个config.properties文件,文件内容如下

          然后在src/main/java下新建一个包:com.qa.base,新建一个TestBase.java,这个类作为所有接口请求测试的父类,都需要继承这个父类,目前我们就写一个构造方法,实现加载读取properties文件。

    TestBase.java 代码如下:

    package com.qa.base;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Properties;
    
    public class TestBase {
    	
    	public Properties prop;
    	
    	//写一个构造函数
    	public TestBase() {
    		
    		try {
    			prop = new Properties();
    			FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+
     "/src/main/java/com/qa/config/config.properties");
    			prop.load(fis);
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    	}
    	
    	
    }
    

          这里来复习下构造函数的作用,上面我们把加载配置文件的代码写在空参构造里,好处就是,每初始化这个类的对象就会执行构造函数的代码,即执行读取配置文件这么一个作用。关于上面配置文件路径是否拼接正确,你可以新建一个main方法的类,执行打印语句:System.out.println(System.getProperty("user.dir"));

    目前,项目结构图如下

    2.2 Get请求方法代码实现

          在src/main/java下新建一个包:com.qa.restclient,然后新建一个RestClient.java文件,下面是具体代码,实现了get请求,和得到相应状态码和响应头信息,以及响应主体的json内容。

    package com.qa.restclient;
    
    import java.io.IOException;
    import java.util.HashMap;
    import org.apache.http.Header;
    import org.apache.http.client.ClientProtocolException;
    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 com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    
    public class RestClient {
    	
    	
    	//1. Get 请求方法
    	public void get(String url) throws ClientProtocolException, IOException {
    		
    		//创建一个可关闭的HttpClient对象
    		CloseableHttpClient httpclient = HttpClients.createDefault();
    		//创建一个HttpGet的请求对象
    		HttpGet httpget = new HttpGet(url);
    		//执行请求,相当于postman上点击发送按钮,然后赋值给HttpResponse对象接收
    		CloseableHttpResponse httpResponse = httpclient.execute(httpget);
    		
    		//拿到Http响应状态码,例如和200,404,500去比较
    		int responseStatusCode = httpResponse.getStatusLine().getStatusCode();
    		System.out.println("response status code -->"+responseStatusCode);
    		
    		//把响应内容存储在字符串对象
    		String responseString = EntityUtils.toString(httpResponse.getEntity(),"UTF-8");
    		
    		//创建Json对象,把上面字符串序列化成Json对象
    		JSONObject responseJson = JSON.parseObject(responseString);
    		System.out.println("respon json from API-->" + responseJson);
    		
    		//获取响应头信息,返回是一个数组
    		Header[] headerArray = httpResponse.getAllHeaders();
    		//创建一个hashmap对象,通过postman可以看到请求响应头信息都是Key和value得形式,所以我们想起了HashMap
    		HashMap<String, String> hm = new HashMap<String, String>();
    		//增强for循环遍历headerArray数组,依次把元素添加到hashmap集合
    		for(Header header : headerArray) {
    			hm.put(header.getName(), header.getValue());
    		}
    		
    		//打印hashmap
    		System.out.println("response headers -->"+ hm);
    		
    	}
    
    }
    

          上面的get方法代码写得比较乱,需要认真看注释,不然层次不清晰。这段代码肯定需要以后重构的,我们刚开始,方便我们测试就先这样去写就好。目前,项目结构图如下

    2.3 TestNG用例测试Get方法

          在src/test/java下新建一个包:com.qa.tests,然后新建一个GetApiTest.java类,写一个TestNG的测试用例来测试下我们上面写的Get请求方法。

    package com.qa.tests;
    
    import java.io.IOException;
    
    import org.apache.http.client.ClientProtocolException;
    import org.testng.annotations.BeforeClass;
    import org.testng.annotations.Test;
    
    import com.qa.base.TestBase;
    import com.qa.restclient.RestClient;
    
    public class GetApiTest extends TestBase{
    	TestBase testBase;
    	String host;
    	String url;
    	RestClient restClient;
    	
    	
    	@BeforeClass
    	public void setUp() {
    		testBase = new TestBase();
    		host = prop.getProperty("HOST");
    		url = host + "/api/users";
    		
    	}
    	
    	@Test
    	public void getAPITest() throws ClientProtocolException, IOException {
    		restClient = new RestClient();
    		restClient.get(url);
    	}
    }
    

    选择run as testng,运行,输出结果如下:

    [RemoteTestNG] detected TestNG version 6.14.3
    response status code -->200
    respon json from API-->{"per_page":3,"total":12,"data":[{"last_name":"Bluth","id":1,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg","first_name":"George"},{"last_name":"Weaver","id":2,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/josephstein/128.jpg","first_name":"Janet"},{"last_name":"Wong","id":3,"avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/olegpogodaev/128.jpg","first_name":"Emma"}],"page":1,"total_pages":4}
    response headers -->{Transfer-Encoding=chunked, Server=cloudflare, CF-RAY=41e822894b39336d-HKG, Access-Control-Allow-Origin=*, ETag=W/"1bb-D+c3sZ5g5u/nmLPQRl1uVo2heAo", Connection=keep-alive, Set-Cookie=__cfduid=d9d93dc43c046707f916670ef491f4c8e1526917157; expires=Tue, 21-May-19 15:39:17 GMT; path=/; domain=.reqres.in; HttpOnly, Date=Mon, 21 May 2018 15:39:17 GMT, Content-Type=application/json; charset=utf-8, X-Powered-By=Express, Expect-CT=max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"}
    PASSED: getAPITest
    

    接下来,我们把响应内容的的bodyjson内容拷贝到一个在线的Josn格式化显示网站(https://www.json.cn/),看看效果如下。

          这个结果和postman上一样,数据都对得上,本篇关于Java代码基于Httpclient开源库实现Get请求的过程就介绍到这里。




    展开全文
  • 1:HttpClient实现基本的POST请求 1.1:Mock模拟一个Post接口 [ { "description":"这是Mock接口,带Header和参数的Demo", "request":{ "uri":"/PostDemo/withHeaders", "method":"post" }, ...

    1:HttpClient实现基本的POST请求

    1.1:Mock模拟一个Post接口

    [
    	{		
    		"description":"这是Mock接口,带Header和参数的Demo",
    		"request":{			
    			"uri":"/PostDemo/withHeaders",
    			"method":"post"
    		},
    		
    		"response":{
    			"json":{
    				"Code":"Success",
    				"Data":{
    					"Link":"./locatin/xxx.jpg",
    					"Message":"Mock模拟的带Header,参数信息的POST请求"
    				}			
    			}
    		}			
    	}
    ]

    1.2:普通的没有参数和Header、Cookies的Post请求

    	public static void main(String[] args) {
    
    		try {
    			// 创建Post对象
    			HttpPost post = new HttpPost("http://localhost:8889/PostDemo/withHeaders");
    			//创建client
    			CloseableHttpClient client = HttpClients.createDefault();
    			//执行post请求
    			HttpResponse response = client.execute(post);
    			// 将response对象转换成String类型
    			String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
    			System.out.println(responseStr);
    
    		} catch (Exception e) {
    
    			e.printStackTrace();
    		}
    	}

    2:HttpClient实现对携带参数、Header、Cookies信息的POST接口的访问

    2.1:Mock实现一个带有Cookie、Header、参数的接口

    [
    	{		
    		"description":"这是Mock接口,带Header和参数的Demo",
    		"request":{			
    			"uri":"/PostDemo/withHeaders",
    			"method":"post",
    			"headers":{
    				"context-Type":"AABB",
    				"Agent":"CCDD"
    			},
    			"cookies":{
    				"SessionID":"11AABB22"
    			},
    			"forms":{
    				"name":"Anndy",
    				"age":"18"			
    			}
    		},
    		
    		"response":{
    			"json":{
    				"Code":"Success",
    				"Data":{
    					"Link":"./locatin/xxx.jpg",
    					"Message":"Mock模拟的带Header,参数信息的POST请求"
    				}			
    			}
    		}			
    	}
    ]

    2.2:代码实现对这个接口的访问

    	public static void main(String[] args) {
    
    		/**
    		 * 携带Cookies、参数、Header的POST请求
    		 */
    		try {
    			// 1:----设置传递参数----
    			// 创建post对象
    			HttpPost post = new HttpPost("http://localhost:8889/PostDemo/withHeaders");
    			// 创建集合 添加参数
    			List<NameValuePair> list = new LinkedList<>();
    			BasicNameValuePair param1 = new BasicNameValuePair("name", "Anndy");
    			BasicNameValuePair param2 = new BasicNameValuePair("age", "18");
    			list.add(param1);
    			list.add(param2);
    			// 使用URL实体转换工具
    	        UrlEncodedFormEntity entityParam = new UrlEncodedFormEntity(list, "UTF-8");
    	        post.setEntity(entityParam);
    
    			// 2:----设置Header信息----
    			// 设置Headers头信息
    			post.addHeader("context-Type", "AABB");
    			post.addHeader("Agent", "CCDD");
    			post.addHeader("Connection", "keep-alive");
    			post.addHeader("Content-Type", "application/x-www-form-urlencoded");
    
    			// 3:----设置Cookie信息----
    			// 创建CookieStore对象用来管理cookie
    			CookieStore cookieStore = new BasicCookieStore();
    			// new BasicClientCookie对象 用来注入cookie
    			BasicClientCookie cookie = new BasicClientCookie("SessionID", "11AABB22");
    
    			cookie.setDomain("localhost");// 设置cookie的作用域
    
    			cookieStore.addCookie(cookie);// 将cookie添加到cookieStore中
    
    			HttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
    
    			// 执行Post请求
    			HttpResponse response = client.execute(post);
    			// 将response对象转换成String类型
    			String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
    			System.out.println(responseStr);
    
    		} catch (Exception e) {
    
    			e.printStackTrace();
    		}
    	}

    2.3:执行结果

     

    展开全文
  • java接口自动化1——一个get请求

    千次阅读 2018-09-13 19:03:07
    1、前提条件: (1).本机环境安装了maven并配置环境变量,如果是idea不用安装,已经...新建maven项目就不写了,前面ui自动化写过了 2、添加必要的依赖包:httpclient、httpcore、Fastjson、Testng &lt;...
  • Java接口自动化测试框架设计-1-开发环境的搭建

    万次阅读 多人点赞 2018-05-21 23:58:05
    废话不多说,刚开始,尽量详细,通过一步一步,手把手教会你搭建接口自动化测试的基础项目环境。 一.前提条件 我这里来一个约定,有以下前提条件。1.本机环境安装了maven并配置环境变量2.本机环境安装了Eclipse...
  • java接口自动化接口测试

    千次阅读 2019-08-27 10:24:09
    这里测试的接口为spring boot开发接口文章中开发好的接口。 测试用例
  • Post类型的接口通常有请求参数,请求参数也是json类型,所以需要写一个类将请求参数序列成json对象 以常见的登录接口为例 新建一个package,和postParameters类   package com.qa.Parameters; public ...
  • 使用Java编写第一个接口自动化程序

    千次阅读 2019-05-09 17:00:40
    从本质来说,我们通常使用的接口测试工具postman,fiddler或者一些其他的在线接口测试,等等都是由java写的,所以我们当然也可以用java来实现发包的过程 首先,我们可以看一下一个注册的接口(此接口是我部署在本地...
  • 1.待测试的接口说明1、自己写的一个登陆登录功能,需要通过加密算法获得私钥,token还有cookie,通过Postman访问该接口 接口的地址:http://localhost:8080/login 请求的方式:post 请求的结果: 2、测试目标 ...
  • 前面说过了,如果你稍微懂得TestNG这个单元测试框架,到目前这个简单的Java接口自动化测试框架主体的骨架部分已经完成设计并实现。这篇,继前篇的基础上,把测试用例中获取响应状态码和响应数据转换成JSON格式这些...
  • Java接口自动化测试框架学习(三)

    万次阅读 多人点赞 2018-09-14 16:53:32
    前面项目已创建好,依赖包添加完成,testng也已添加 项目结构如下: 1.设计配置文件 在src/main/java下新建一个包:...然后在src/main/java下新建一个包:com.qa.base,新建一个TestBase.java,这个...
  • 接着上面一篇,这篇来封装下PUT和Delete方法。虽然这两个方法很少用,这篇内容就算了解一下。PUT方法封装完成参考POST方法,Delete方法封装可以参考GET方法。由于弄明白了前面的Get和...import java.io.IOExcepti...
  • 手把手教你搭建java接口自动化测试框架(一):前期准备工作 本人也是接口自动化测试框架小白 最近跟着一些教程成功搭建了自己的接口自动化测试框架 该框架基于IDEA+TestNG+extentreport可完成基本的post、get请求 ...
  • 1:HttpClient模拟一个get请求的Demo 1.1:Maven添加HttpClient依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <...
  • 前言:目前Mock技术已经比较成熟,在日常的工作中Mock也可以给我们带来很大的遍历,本篇文章将会使用Moco框架,一步一步搭建一套Mock Server,使得接口自动化测试更加的提前,也能够使得前后端分离。 共识与痛点...
  • 基于java接口自动化框架

    千次阅读 2018-03-07 16:53:11
    框架简介 APIAutoTest是处理API接口的轻量级自动化测试框架,Java语言实现,基于TestNG测试框架,支持持续集成,自动构建与测试。框架介绍数据驱动设计,使用TestNG中的@DataProvider读取Excel中存储的自动化测试...
  • 接口自动化思路_JAVA

    万次阅读 多人点赞 2015-05-26 15:24:16
    写在开头: 技术渣做接口自动化,大神们请轻喷!多提提优化方案和问题点。 以前做接口测试一直通过postman 和 soapUI来做,Postman 是Chrome的一个插件Case多了不好管理,同时执行起来麻烦,得一个一个去点击执行,...
  • 手把手教你搭建java接口自动化测试框架(四):断言、生成测试报告 上一集说到post和Get请求请求后得到的响应(即接口返回值)是我们想要的吗 比如网站上get接口文档说明 : “data”: [ { “id”: 7, “email”: ...
  • Java知识体系最强总结(2021版)

    万次阅读 多人点赞 2019-12-18 10:09:56
    本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同...
  • 1:Mock模拟带有Header信息的请求 1.1:Test.json文件的编写 [ { "description":"这是Mock接口的Demo带有Cookies信息", "request":{ "uri":"/Post...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的...
  • Mock可以模拟一个http接口的后台响应,就这么简单,可以模拟request、response 1.2:如何获取Mock 下载Moco Runner standlone:Standalone Moco Runner 2:Mock模拟一个Get请求 2.1:Mock模拟一个不带参数的Get...
  • 我们在使用java+restassured做接口自动化测试时,如何模拟请求参数为json形式的呢?当post请求参数为json时:final StringbodyString = "{\"is_pid\":\"20366630534\",\"name_pid\&...
  • java form-data请求方式 请求接口

    千次阅读 2020-11-24 15:57:47
    java form-data请求方式 请求接口 参数示例 MultiValueMap<String, String> map= new LinkedMultiValueMap<>(); map.add("apikey", kakao_api_push_api_key); map.add("userid",kakao_api_push_userId...
  • 手把手教你搭建java接口自动化测试框架(三):基础代码填充 手把手教你搭建java接口自动化测试框架(三):基础代码填充 base包下新建TestBase.java package com.qa.base; import java.io.FileInputStream; ...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java ...
  • 手把手教你搭建java接口自动化测试框架(四):get、post方法实现 看完了三篇 各种配置、代码 到这一篇终于可以进行实战了 是骡子是马拉出来溜溜( •̀ ω •́ )✧ 执行get请求 tests包下新建GetTest01.java ...
  • 一般token会在登录接口返回结果中呈现,从代码层面获取token的方式有很多种,我是使用jsonpath这个json路径语言去匹配token所在路径的key值 我将获取jsonpath写成一个静态方法放在testUtil里面,将jsonpath路径写...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 263,915
精华内容 105,566
关键字:

java的接口自动化请求头设置

java 订阅