接口测试平台代码实现51: 自动异常测试-4

简介: 接口测试平台代码实现51: 自动异常测试-4

 书接上文,我们回顾一下最后的这个函数:微信图片_20220623070748.png

我们在catch中已经对不可替换的请求体类型做了处理。现在要开始进行try中符合规则的请求体类型了。

   这里需要补一句,这里第一层try中可以运行完的只是说不会报错,共俩种:

  1. none
  2. 二维数组

其中none很显然我们也不需要对其进行替换所以我们这么写:微信图片_20220623070809.png

我们只需要在俩个红色箭头的位置,进行替换规则即可。数组是二维数组:长这样 [["aa","11"],["bb":"22]]

微信图片_20220623070817.png

如果要替换,那我们的循环应该起码是俩层,

第一层我们负责遍历请求体有几个参数,示例有俩个参数

第二层循环遍历预置的替换参数,示例有6个微信图片_20220623070824.png

但是我们需要先加上把这个替换数据的数组声明出来的代码:微信图片_20220623070832.png

接下来就是这个复杂的双层循环替换了。我们要保证每次替换只让目标参数的值依次变成预置替换参数,其他的保持原始正确的值。那么就不要在原始的s上做替换,否则我们会丢失原来的正确的值。

比如 示例中:aa = 11 ,bb =22 俩个参数。当我们遍历aa的时候,aa = '中文', bb=22。然后到了该遍历bb的时候,我们就没办法把aa复原了,因为原始值11已经丢失了。所以我们要新建一个新的请求体作为替身。每次替换前,都让他的值初始化,靠着原始的s,把s的原始值覆盖到这个新替身上即可。

微信图片_20220623070838.png

(最后会给大家附上这个函数的完整代码可复制版本)代码中的深拷贝是jquery的方法:$.extend(true,新,旧)我们每次都输出打印了下这个新请求体,来看看是不是符合我们预期吧:

微信图片_20220623070845.png

大家可以看到,当开始遍历bb的时候,aa成功恢复了原始值11。看来没什么问题。

   数组的也就是这个form-data和x-www....的我们完成之后。接下来就是raw-json格式的了。看看现在的代码:

微信图片_20220623070851.png

当我们判断出来这是个json串的时候,就对其进行依次替换。

微信图片_20220623070901.png

我们遍历这个字典的key,然后依次进行替换,仍然是俩层大循环:

代码如下:

微信图片_20220623070907.png

来看下效果:

微信图片_20220623070914.png

果然都进行了替换。

所以给大家奉上源码:

function error_play() {
    api_body = document.getElementById('error_api_body').value;
    ready_error_data = document.getElementById('ready_error_data').value;
    //把预替换数据从一个大字符串,按逗号解析成数组。
    var r = ready_error_data.split(',');
    //判断是不是form-data/x-www...的二维数组格式
    try {
        var s = eval(api_body);
        if(s instanceof Array){
            console.log('这是数组');
            for(var i=0;i<s.length;i++){ //第一层 判断一共请求体有几个参数就进行几次大循环
                for(var j=0;j<r.length;j++){
                    var new_body = []; //我们不能在s本尊上来回替换,所以弄了个替身,这个替身每次新的参数循环,都会重新被赋值原始s
                    $.extend(true,new_body, s);
                    new_body[i][1] = r[j];
                    console.log(new_body)
                }
            }
        }else{
            console.log('这是none');
            alert('当前请求体不含任何内容!');
        }
    }catch (e) {
        //若不是就继续判断是不是raw-json的json串格式
        try {
            var s = JSON.parse(api_body);
            console.log('这是字典json')
            for(var i in s){
                for(var j=0;j<r.length;j++){
                    var new_body = {};
                    $.extend(true,new_body, s);
                    new_body[i] = r[j];
                    console.log(new_body)
                }
            }
        }catch (e) {
            //若也不是,那就不需要做异常值测试了
            alert('当前接口的请求体类型不支持异常值测试!')
        }
    }
}

本节的最后,给大家看一个bug:

就是当我们把请求体变成如下这种带回车的情况时,那么点击异常值测试就会报错,甚至打不开弹层:

微信图片_20220623070923.png微信图片_20220623070929.png

这种原因是因为我们在调用这个函数的时候,这个按钮的传参数位置因为有了回车,就变成下面这个样子:

微信图片_20220623070936.png

这种直接换行的写法在html中属于引起了语法错误。

那么我们显然在一开始的时候没考虑到这种情况,只是简单的想当然的我们需要这个接口请求体,就传进来的思维。


所以下节课会给大家公布一些解决方案和具体代码。小伙伴也可以自己想想办法,看看怎么解决?欢迎回复:

相关文章
|
25天前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
24 1
|
29天前
|
缓存 运维 Serverless
应用研发平台EMAS产品常见问题之测试检查更新没有反应如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
机器学习/深度学习 人工智能 监控
视觉智能平台常见问题之体验产品的美颜测试关掉如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
23 1
|
1月前
|
Java 测试技术
单元测试编写可测试代码
单元测试编写可测试代码
19 2
|
2月前
|
测试技术
Lim测试平台测试报告说明
Lim测试平台测试报告说明
32 2
|
10天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
19 0
|
1月前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!
|
1月前
|
人工智能 监控 测试技术
利用AI辅助工具提升软件测试效率
【2月更文挑战第17天】 随着科技的不断发展,人工智能(AI)在各个领域的应用越来越广泛。在软件测试领域,AI技术也发挥着重要作用。本文将探讨如何利用AI辅助工具提升软件测试效率,包括自动化测试、智能缺陷识别和预测等方面。通过引入AI技术,软件测试过程将变得更加高效、准确和可靠。
164 1
|
1月前
|
Web App开发 前端开发 测试技术
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
|
29天前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。