接口测试代码和工具

发布于:2024-06-25 ⋅ 阅读:(121) ⋅ 点赞:(0)

通过python的requests给接口发送请求进行测试

#coding:utf-8

import requests

class TestApi():

url_login = "https://legend-sit.omodaglobal.com/api/auth/oauth2/token"

url_topic_b = "https://legend-sit.omodaglobal.com/api/community/topic_b/page?size=10&current=1"

def __init__(self):

pass

def test_log(self):

header = {}

header["Content-Type"] = "application/x-www-form-urlencoded"

header["Tenant-Id"] = "1"

header["Authorization"] = "Basic bGVnZW5kV2ViOmxlZ2VuZFdlYg=="

body = {}

body["username"] = "majianxiong"

body["randomStr"] = "blockPuzzle"

body["grant_type"] = "password"

body["scope"] = "server"

body["password"] = "VN7bZl87c2zhlQhSuLVvhw=="

response = requests.post(self.url_login,headers=header,data=body)

print(response.json())

token_type = response.json()["data"]["token_type"]

access_token = response.json()["data"]["access_token"]

print(token_type,access_token)

return token_type,access_token

def test_topic_b(self):

token_type,access_token = self.test_log()

header = {}

header["Tenant-Id"] = "1"

header["Authorization"] = token_type + " " + access_token

response = requests.get(self.url_topic_b,headers=header)

print(response.json())

testapi = TestApi()

testapi.test_topic_b()

通过java的HttpClients给接口发送请求进行测试

package org.example;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
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.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONObject;
/**
 * Hello world!
 *
 */

 class Test{
    String test_log(){
        CloseableHttpClient httpClient = HttpClients.createDefault();
        String url_login = "https://legend-sit.omodaglobal.com/api/auth/oauth2/token";
        //创建httppost对象
        HttpPost httpPost = new HttpPost(url_login);
        httpPost.setHeader("Content-Type","application/x-www-form-urlencoded");
        httpPost.setHeader("Tenant-Id","1");
        httpPost.setHeader("Authorization","Basic bGVnZW5kV2ViOmxlZ2VuZFdlYg==");
        List<NameValuePair>  parameters = new ArrayList<>();
        parameters.add(new BasicNameValuePair("username","majianxiong"));
        parameters.add(new BasicNameValuePair("randomStr","blockPuzzle"));
        parameters.add(new BasicNameValuePair("grant_type","password"));
        parameters.add(new BasicNameValuePair("scope","server"));
        parameters.add(new BasicNameValuePair("password","VN7bZl87c2zhlQhSuLVvhw=="));
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(parameters));
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
        try {
            CloseableHttpResponse response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();
            String responseText =  EntityUtils.toString(entity, StandardCharsets.UTF_8);
            org.json.JSONObject jsonObject = new org.json.JSONObject(responseText);
            org.json.JSONObject jsonObjectData = jsonObject.getJSONObject("data");
            String token_type = jsonObjectData.getString("token_type");
            String access_token = jsonObjectData.getString("access_token");
            System.out.println(token_type+" "+access_token);
            return token_type+" "+access_token;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    void test_topic_b(){
        String token = test_log();
        CloseableHttpClient httpClient = HttpClients.createDefault();
        String url_topic_b = "https://legend-sit.omodaglobal.com/api/community/topic_b/page?size=10&current=1";
        //构造httpGet请求对象
        HttpGet httpGet = new HttpGet(url_topic_b);
        httpGet.setHeader("Tenant-Id","1");
        httpGet.setHeader("Authorization",token);
        try {
            CloseableHttpResponse response = httpClient.execute(httpGet);
            HttpEntity entity = response.getEntity();
            String responseText =  EntityUtils.toString(entity, StandardCharsets.UTF_8);
            System.out.println(responseText);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }

}
public class TestAPI{
    public static void main(String[] args) {
        Test test = new Test();
        test.test_topic_b();
    }
}

工具发送接口测试

jmeter

通过jmeter发送接口请求进行测试

postman

脚本

数据库连接工具DBeaver

推荐的想法

本人比较推荐如果代码用python(书写比较简单),工具用jmeter。postman的功能有缺失比如连接数据库或者非http协议的支持没有jmeter友好。但jmeter学习起来要比postman复杂点。为了功能的完善推荐jmeter