学API接口测试,致富植发(二)用Python发请求
程序员文章站
2024-03-22 09:37:04
...
通过python发送HTTP请求
此时,客户端不是浏览器,而是我们编写的脚本。
一、知识点
1、requests是python的第三方模块,pip3 install requests。
2、requests也是python的HTTP客户端库,代码主要调用requests提供的api来发送HTTP请求。
3、常用api:
request.put(url,params,proxies)
request.post()
request.delete()
二、代码
请求静态文件
import requests
if __name__ == '__main__':
#提交一个GET类型的HTTP请求,返回一个响应对象
resp=requests.get('http://127.0.0.1:80/test.html')
# 状态行的状态码
print(resp.status_code)
# 状态行的状态码说明
print(resp.reason)
# 响应头
print(resp.headers)
# 打印出来发现不是字典类型,但是类似字典。
print(type(resp.headers))
# 字典的键区别大小写,这里的不区分。
print(resp.headers['content_type'])
print(resp.headers['Content_Type'])
# 如果body是文本格式,用text。同时为了防止乱码,设字符集utf-8。
resp.encoding = 'utf-8'
print(resp.text)
# 如果body是二进制格式(非文本格式,如图片),用content。
# print(resp.content)
请求动态页面
json:https://blog.csdn.net/maoxuexue/article/details/105972276
在聚合https://www.juhe.cn/找个API测试一下,根据格式写个URL,?后编个key。例如:
import requests
if __name__ == '__main__':
resp=requests.get('http://apis.juhe.cn/cook/category?key=1234')
print(resp.status_code)
print(resp.reason)
print(resp.headers)
print(resp.text)
200
OK
{'Date': 'Thu, 07 May 2020 11:18:06 GMT', 'Content-Type': 'application/json;charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Set-Cookie': 'aliyungf_tc=AQAAANxxb0SlgQ0A4+5ZcVujkk43CASB; Path=/; HttpOnly', 'Etag': 'aac7930e0d20f08eefe02f6d5dd045fe'}
{"resultcode":"101","reason":"错误的请求KEY","result":null,"error_code":10001}
根据响应body做个小的接口测试。
import unittest
import requests
import json
class api_test(unittest.TestCase):
'''分类标签列表接口测试用例'''
def test_api_key(self):
'''测试接口key'''
#获取响应报文对象
# #写法1
# resp=requests.get('http://apis.juhe.cn/cook/category?key1=1234&key2=2345')
# #写法2(最全)
url = 'http://apis.juhe.cn/cook/index'
# params参数用于设置query string 查询字符串
param = {'key1': '1234','key2':'2345'}
# proxies参数用于设置代理服务器,设置了才能被fiddler抓包
resp = requests.get(url=url, params=param, proxies={'http': 'http://127.0.0.1:8888'})
#断言状态码
self.assertEqual(200,resp.status_code)
#将json字符串转换成python对象(字典),有两种方法
# #方法1
# o=json.loads(resp.text)
# #方法2
o=resp.json()
resultcode=o.get('resultcode')
reason=o.get('reason')
#断言body
self.assertEqual('101',resultcode,msg="实际resultcode不等于预期resultcode")
self.assertEqual('错误的请求KEY', reason, msg='实际reason不等于预期')
用fiddler抓下包。