[进击的测试工程师] 测试工具之Postman——自动化测试配置

话说,测试玩不利索的CV算法工程师,不是一个好的炼丹师。所以这篇主要记录使用Postman的过程。使用Postman的起因,是因为OCR服务已经搭起来了,但通过Post请求图片的批量测试,是一个很麻烦的事情,没有特别趁手的测试工具,测试大佬们也很难push,所以就自己简单搭一个,以后变更服务时,测试起来也比较方便。

Postman也是来自谷人希,似乎无论是做工程,还是搞算法的,都绕不过谷歌这座庞然大物。Postman mac dmg安装非常方便,再次不赘述了。本文参考了[1][2][3]

任务描述

我这边想使用Postman想要达到的目标有两个:
目标一:通过迭代方式,自动生成多张图片的Request请求,并返回结果。
目标二:解析Response Json状态码,统计结果

Postman两个模块

Postman能用到的两个模块,分别是Collection和Runner。

Collection主要用于Request请求的配置,包括Post/Get等。Runner就是在配置完成后,用于对特定Request进行批量测试的模块。所以这里在Postman Collection 中配置,详细过程可参考[1]这里不再赘述。

在基本的Collection 和 Requset创建完成后,为了达到图片名自动变更的目的,有以下几个地方需要加以区别。

Collection & Request

  • 图片命名
    第一批的图片是39张,为了方便图片名根据迭代自动生成,我做了处理,命名为01.jpg~ 39.jpg,这样较为规律的命名,便于迭代时变更。

  • Globals
    Globals 是全部变量,点击右上角,Request选框右侧,有小眼睛的图片,里面就可以直接配置Globals。我这里配了6个,都是以g_***为规范。
    如 g_image_name 这个变量的INTIAL VALUE,CURRENT VALUE都配置为0,等一会儿用作变化的图片名。其他还命名了g_imageUrl,g_serviceCode,g_cardType等等。需要注意的一点是,全局变量的值,会随着迭代而增加,所以现在设置的值,并不是固定不变的。

  • Params
    Params在POST按钮的下面,这里面用于配置POST请求中用到的变量,如下。在这里插入图片描述Key中填写的字段会体现在POST请求中,而VALUE中的这些以g_*开头的值,在Globals中配置。最后POST后面会生成`

    {{base_url}}?serviceCode={{g_serviceCode}}&imageUrl=\
    {{g_imageUrl}}/{{g_image_name}}.jpg&cardType={{g_cardType}}&uicId=\
    {{g_uicId}}
    
  • Pre-request Script
    Pre-request Script 这个脚本框,主要用于编辑请求发送之前的操作,如下图所示,图来源[2]
    在这里插入图片描述 在我们这个需求中,主要是希望图片名g_image_name可以自动变更,所以代码如下:

       //获取全局变量
       var temp = parseInt(postman.getGlobalVariable("g_image_name"));
       //自增
       temp += 1;  
       //命名 1.jpg -> 01.jpg
       if(temp < 10){  
          temp_str = "0"+temp
       }else{
          temp_str = temp
       }
       // 设置回全局变量
       postman.setGlobalVariable("g_image_name", temp_str)  
    

    就完成了g_image_name的自增。

  • Tests
    Tests Script 如上图,用于统计返回结果的状态。我这边Json的返回时,正确代码是0,错误代码是-444,如下:

    {
        "code": 0,
        "msg": "Success",
        "data": {
            "data": {}
        }
    }
    
    {
        "code": -444,
        "msg": "Failed",
        "data": {
            "data": {}
        }
    }
    

    所以为了收集正确的结果,我代码这写的:
    这部分参考的是[3]

    var jsonData = pm.response.json();
    pm.test("识别成功", function () {
        pm.expect(jsonData.data.code).to.eql(0);
    });
    

Runner

Runner从上面配置好的Collection进入。在这里插入图片描述
这里是测试运行的部分。进来之后,可以在左侧栏配置相应的信息,如下图。
在这里插入图片描述
其中iterations参数指定要进行多少次请求,我这边有38张图片,所以38就可以完成所有的测试。跑完的结果在右侧就能看到了,End。

猜你喜欢

转载自blog.csdn.net/sinat_21720047/article/details/83064449