首页 > 其他分享 >软件测试 | 如何使用代理配置快速定位接口测试脚本问题?

软件测试 | 如何使用代理配置快速定位接口测试脚本问题?

时间:2023-07-05 16:31:51浏览次数:49  
标签:http 请求 代理 接口 static https import 软件测试

更多软件测试学习资料!!!

在调试接口用例过程中,如果响应结果和预期结果不一致,则需要检查请求信息。通过代理获取自动化测试中的请求响应信息,对比与正常请求响应的区别,就能够更直观的排查请求错误,相当于编写代码时的 debug 功能。

实战练习

在自动化测试中,不论是 Java 版本还是 Python 版本,均可以通过设置代理来监听自动化测试脚本的请求响应信息。

Python 版本

通过 proxies 参数,监听请求与响应信息。

import requests

# 1. 定义一个代理的配置信息,分别需要设定http协议与https协议的代理地址。

proxy = {

    "http": "http://127.0.0.1:8000",

    "https": "http://127.0.0.1:8080"

}

2. 通过proxies 传递代理配置。

requests.post(url="https://httpbin.ceshiren.com", proxies=proxy, verify=False)

通过 proxies 设定代理信息,代理格式要求为字典类型。默认情况下,verify 是设置为 True 的。将 verify 设置为 False,在发送 HTTPS 请求的时候,Requests 能忽略对 SSL 证书的验证。

Java 版本

import io.restassured.RestAssured;

import static io.restassured.RestAssured.*;

import static io.restassured.specification.ProxySpecification.host;

import static org.hamcrest.core.IsEqual.equalTo;

public class Requests {

    public static void main(String[] args) {

        RestAssured.proxy = host("127.0.0.1").withPort(8080);

        given().relaxedHTTPSValidation().when().get("https://httpbin.ceshiren.com/get").

                then().log().all();

    }

}

使用代理工具验证结果

在实际工作中,使用代理工具(参考常用代理工具章节)结合代理配置可以清楚查看每一次的请求信息,实际操作步骤如下:

  • 抓包工具设置的端口,与代码的代理地址端口保持一致,如下图所示:

  • 如下图所示,在页面发起正常的请求信息,post 请求中,请求数据 key 值为 school,value 值为霍格沃兹测试学社:
  • 使用自动化测试脚本发起与第2步同样的请求,只是修改 value 值为第二次请求。

Python 版本

import requests

def test_proxy():

    # 1. 定义一个代理的配置信息

    proxy = {

        "http": "http://127.0.0.1:8888",

        "https": "http://127.0.0.1:8000"

    }


    # 2. 通过proxies 传递代理配置

    requests.post(url="https://httpbin.ceshiren.com/post",

                  data={'school': "第二次请求"},

                  verify=False)

Java 版本

import io.restassured.RestAssured;

import static io.restassured.RestAssured.*;

import static io.restassured.specification.ProxySpecification.host;

public class Requests {

    public static void main(String[] args) {

        RestAssured.proxy = host("127.0.0.1").withPort(8080);

        given().

                contentType("application/x-www-form-urlencoded;charset=utf-8").

                formParam("school", "第二次请求").relaxedHTTPSValidation().

                when().

                post("https://httpbin.ceshiren.com/post").

                then()

                .log().all();

    }

}

抓包工具抓包结果如下图所示:

通过以上案例,可以看出将代理配置和代理工具结合使用,可以非常直观看出两次接口请求的差别,从而提高定位接口测试脚本问题的效率。

标签:http,请求,代理,接口,static,https,import,软件测试
From: https://blog.51cto.com/u_16174036/6632913

相关文章

  • Revit开发之 IExportContext接口详细
    如果要将Revit模型输出为特定的格式,则需要利用revit的数据导出接口,在revit的二次开发中,给我们提供IExportContext接口。当前接口可用户模型轻量化导出、自定义格式导出等。编号 函数名称函数功能1Finish在导出过程的最后,处理完所有的实体后调用此防范2IsCanceled......
  • 模拟嵌入式边缘计算卡设计方案:367-XC7Z100 板卡 基于zynq XC7Z100 FMC接口通用计算平
    基于zynqXC7Z100FMC接口通用计算平台 一、板卡概述北京太速科技板卡由SoCXC7Z100-2FFG900I芯片来完成卡主控及数字信号处理,XC7Z100内部集成了两个ARMCortex-A9核和一个kintex7的FPGA,通过PL端FPGA扩展FMC、光纤、IO等接口,PS端ARM扩展网络、USB、RS232等接口......
  • 怎么做接口自动化?一名功能测试的心路历程
    小帅是一名功能测试工程师,最近参与的项目接口异常复杂,发版非常频繁,每次回归测试都得很久,项目负责人决定为这个项目搭建接口自动化流程,提高测试效率。这份重任最后还是到了小帅头上,问题来了,要搭建自动化测试,首先得精通一门编程语言,作为一名功能测试小帅感觉头都要大了,自己也只会简......
  • debian_ubuntu配置sock/socks5h/http/https代理
    编辑用户变量vi~/.bashrc添加以下代码#setproxyfunctionproxy_set(){exportMY_PROXY=socks5h://192.168.10.25:1080exportno_proxy="localhost,127.0.0.0/8,::1/128,.local,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12"exporthttp_proxy=${MY......
  • SpringBoot源码初学者(一):SpringBoot功能扩展接口的使用与源码分析
     在长期的源码学习中,我一直没有找到一个讲解SpringBoot源码的文章,适合刚开始阅读源码的新手,包括我之前的写的一些文章,说实话SpringBoot的源码的确不适合新手,跳转多、结构复杂混乱,很容易迷乱其中。长时间的学习当中,也总结出这些文章的部分问题:没有说明用法,直接讲解源码,其实很......
  • 接口缓存、定时更新、异步发送短信
    目录一、接口缓存二、双写一致性之定时更新celery的定时任务代码celery_task/home_task.pycelery_task/celery.py启动worker、beta三、异步发送短信步骤视图函数user/views.py任务celery_task/user_task.py四、异步秒杀逻辑前后端4.1前端Sckill.vue4.2后端视图类路由任务:celery......
  • 012双写一致性之定时更新,异步发送短信,异步秒杀逻辑前后端,课程页面前端,课程相关表分析,
    0双写一致性之定时更新#一旦加入缓存,就会出现数据不一致的请请求#双写一致性问题 -1改数据,删缓存-2改数据,改缓存-3定时更新#首页轮播图存在双写一致性问题这个问题 -以现在的技术水平(信号),做不到:改数据删缓存 -能选择的就是定时更新 -轮播......
  • 013查询所有课程接口,课程详情接口,课程详情后台之所有章节接口,所有课程前台,课程详情前
    1查询所有课程接口#查询所有课程接口 -带过滤:按分类过滤-带排序:价格,学习人数-带分页:简单分页1.1视图类classCourseView(GenericViewSet,ListModelMixin):queryset=Course.objects.filter(is_delete=False,is_show=True).order_by('orders')seria......
  • python接口自动化封装导出excel方法和读写excel数据
    一、首先需要思考,我们在页面导出excel,用python导出如何写入文件的封装前需要确认python导出excel接口返回的是一个什么样的数据类型如下:我们先看下不对返回结果做处理,直接接收数据类型是一个对象,无法获取返回值此时我们需要对返回数据做处理,如下;response.text#响应文本数据......
  • go 传参 类型:接口类型 返回统配接口类型 , 求两个切片并集
     用一个函数可以同时求两个[]string 切片,或者两个[]int切片并集packagemain//测试统配传参funccommonParamTest(s1,s2interface{})interface{}{switchv:=s1.(type){//获取对应的类型case[]string:m:=make(map[string]int)......