Python11 期小魔仙之第一次 HTTP 接口测试

学完接口自动化测试了,我决定把它运用到现在正在进行的项目上。兴致勃勃地创建了一个项目。然而,这一刻才明白,发现除了课堂上所讲的内容,还有很多很多的坑需要填补。报班学习,除了要学习到课堂上老师所讲的内容,更重要的是需要学习到解决问题的方法。
在完成了我的第一个接口请求之后,终于缓了一口气,下面介绍一下我的艰辛历程:
经过查看接口文档,发现这是一个 post 请求,那么好的,看我的!

  1. 创建一个 http_request 请求:
    i
port requests
url='xxx'
data={'phoneNo': 'xxx'}
res=requests.post(url=url, data=data)
print(res.json())

运行:
{'msg': '【认证鉴权服务器】找不到 clientId', 'result': False, 'kind': '610010000100001'}
咦,报错了!找不到 clientId

  1. 在华华老师的提示下,我把它放在 headers 里去,通过使用 fiddler 工具抓包,我把请求头里的信息放到了 headers 里:
import requests

url='xxx'
data={'phoneNo': 'xxxx'}
headers={
        "Content-Type": "application/json",
        "User-Agent": "xxx/2.9.2 (iPhone; iOS 11.4; Scale/3.00)",
        "client_id": "xxx@xxx",
        "unicode": "xxx1034acaxxx8c049101a"
        }
res=requests.post(url=url,headers=headers, data=data)
print(res.json())

运行:
{'msg': '数据解析异常,请输入有效的数据信息', 'kind': '0000003', 'result': False}
哎, 这是什么鬼。

  1. 经过分析,查资料,数据需要做个处理,所以我决定尝试处理一下 data 的数据:
    用 JSON 处理 data 的数据:
import json
import requests

url='xxx'
data={'phoneNo': 'xxx'}
headers={
        "Content-Type": "application/json",
        "User-Agent": "xxx/2.9.2 (iPhone; iOS 11.4; Scale/3.00)",
        "client_id": "xxx@xxx",
        "unicode": "xxxx"
        }
res=requests.post(url=url,headers=headers, data=json.dumps(data))
print(res.json())

运行:
{'data': {'flag': True}, 'result': True}
嘿嘿,终于成功了。

  1. 把它封装成类,并加上处理异常的操作:
import requests
import json


class MyHttpRequest:
    def my_http_request(self,url,headers,data,http_method):
        try:
            if http_method.upper() =="POST":
                res = requests.post(url=url,data=data,headers=headers)
            elif http_method.upper() =="GET":
                res = requests.get(url=url,data=data,headers=headers)
            else:
                print("请求方式不正确")
        except Exception as e:
            print("请求报错了:{}".format(e))
            raise e
        return res

if __name__ == '__main__':
    url = 'xxx'
    headers = {
        "Content-Type": "application/json",
        "User-Agent": "xxx/2.9.2 (iPhone; iOS 11.4; Scale/3.00)",
        "client_id": "xxx@xxx",
        "unicode": "xxxx"
    }

    data = {"phoneNo": "xxx"}
    res = MyHttpRequest().my_http_request(url, data=json.dumps(data), http_method="post", headers=headers)
    print('结果是:{}'.format(res.json()))

运行:
结果是:{'data': {'flag': True}, 'result': True}

这是我的第一次脱离课堂,自己实际动手去做接口自动化,经过自己的尝试,最终成功了!
自动化测试还有很多路要走,但是我会继续努力的!

1 操作
huahua 在 2020-08-07 21:50:49 更新了该帖
1 回帖
请输入回帖内容 ...
  • huahua

    😎 小魔仙,棒棒滴!😎 😎