利用Charles抓包巧转接口自动化测试用例(一)

1,801 阅读2分钟

这是我参与8月更文挑战的第24天,活动详情查看:8月更文挑战

在前面的文章中,也有介绍类似的工具的。例如:一键将接口请求转为测试用例介绍了开源的mitmproxy录制转化为接口测试用例,# 一键将接口请求转为测试用例(续) 文章记录了如何把postman的测试用例转化为python的接口自动化的测试用例,那么今天呢,在来介绍,用charles抓包转为接口测试用例的方式。具体的怎么做呢,听我一一道来。
首先呢,我们启动charles抓包。打开charles设置抓包,网上教程有很多,这里不再介绍怎么设置charles抓包。我们连上charles的代理去请求对应的接口就可以。这里我们可以看到charles会抓到链接代理的所有的请求。

image.png

我们可以看到,我们录制的两个请求的接口。那么我们接下来把这个两个接口导出来。怎么导出呢。选择我们的要导出的接口,右键选择export。选择我们要保存的名称,格式选择.har格式。

    接下来,我们去安装对应的python模块。开源地址:github.com/httprunner/… 对应的安装方式

pip install har2case

安装完毕后,我们可以去使用下

image.png 我们对应产生了两个接口文件,对应都转化成json

            我们看下对应的json文件。

            第一个文件的json详情。


{
    "config": {
        "name": "testcase description",
        "variables": {}
    },
    "teststeps": [
        {
            "name": "/openapi/api/v2",
            "request": {
                "url": "http://openapi.tuling123.com/openapi/api/v2",
                "method": "POST",
                "headers": {
                    "Content-Type": "application/json",
                    "User-Agent": "PostmanRuntime/7.15.2",
                    "Postman-Token": "8a096b5c-425a-4cfc-bf52-75ef38f5ba76"
                },
                "json": {
                    "reqType": 0,
                    "perception": {
                        "inputText": {
                            "text": "闄勮繎鐨勯厭搴�"
                        },
                        "inputImage": {
                            "url": "imageUrl"
                        },
                        "selfInfo": {
                            "location": {
                                "city": "鍖椾含",
                                "province": "鍖椾含",
                                "street": "淇℃伅璺�"
                            }
                        }
                    },
                    "userInfo": {
                        "apiKey": "",
                        "userId": ""
                    }
                }
            },
            "validate": [
                {
                    "eq": [
                        "status_code",
                        200
                    ]
                },
                {
                    "eq": [
                        "headers.Content-Type",
                        "text/plain; charset=UTF-8"
                    ]
                }
            ]
        }
    ]
}
第二个文件。
{
    "config": {
        "name": "testcase description",
        "variables": {}
    },
    "teststeps": [
        {
            "name": "/openapi/api/v2",
            "request": {
                "url": "http://openapi.tuling123.com/openapi/api/v2",
                "method": "POST",
                "headers": {
                    "User-Agent": "PostmanRuntime/7.15.2",
                    "Postman-Token": "0a2ee535-cfd7-44d4-a1f6-2e433c9a907b"
                },
                "data": ""
            },
            "validate": [
                {
                    "eq": [
                        "status_code",
                        200
                    ]
                },
                {
                    "eq": [
                        "headers.Content-Type",
                        "text/plain; charset=UTF-8"
                    ]
                }
            ]
        }
    ]
}

这里我们拿到这两个文件,我们看下,怎么去取这些值, 我们可以看到 teststeps里面的数据是我们可以用到的,用python的json模块,去解析这个文件,拿到对应的name,reuqest的字段里面的数据,写入到我们对应的测试库,组成我们测试用例就可以,注意,部分数据需要进行清洗。

       这样我们就可以将抓包的数据,写入到测试平台或者接口测试框架的数据中,就完成了。\

        工具辅助测试,测试利用工具。\

          工具带来成长,成长依靠工具。