1.使用Python-requests包进行接口测试# 加载包 import requests # 百度搜索的接口,搜索的内容为requests url = "http://www.baidu.com/s?wd=requests" # 发送请求,将服务器返回的响应放到变量r中 r = requests.get(url) # 打印文本格式的响应 print(r.text) # 对结果进行断言,判断关键字在不在结果中 # assert "Requests: HTTP for Humans™" in r.text # 对金融项目注册接口的测试 # get请求的参数拼接到URL后面 ?key=value&key=value&key=value 的格式 url = "http://192.168.2.36:8089/futureloan/mvc/api/member/register?mobilephone=12345&pwd=12345" r = requests.get(url) print(r.text) print(r.json()) # 如果响应体是json格式的内容,使用r.json() print(r.json()['code']) # r.json()后可以当做字典使用 assert r.json()['code'] == "20108" assert r.json()['msg'] == "密码长度必须为6~18" # get请求的参数,使用params 传递 url = "http://192.168.2.36:8089/futureloan/mvc/api/member/register?" cs = { "mobilephone": "18220820775", "pwd": "12345", "regname": "hello" } # params 参数不能写错,只能是requests中定义好的参数名 r = requests.get(url, params=cs) print(r.text) assert r.json()['code'] == "20108" assert r.json()['msg'] == "密码长度必须为6~18" print("状态码", r.status_code) print("状态原因", r.reason) print("响应头", r.headers) print("cookies", r.cookies) print("文本格式的响应体", r.text) print("请求头", r.request.headers) # 心知天气查询接口的测试 url = "https://api.seniverse.com/v3/weather/now.json?key=Sh-LsrOsCyo4vp8Tp&location=xian" r = requests.get(url) print(r.json()) # 西安 print(r.json()['results'][0]['location']['name'], end = "当前的温度:") # 温度 print(r.json()['results'][0]['now']['temperature']) # 获取用户列表 url = "http://192.168.2.36:8089/futureloan/mvc/api/member/list" r = requests.get(url) print(r.json()) print(r.request.headers) # {'User-Agent': 'python-requests/2.25.1' # 设置 User-Agent , 伪装成是浏览器发的请求 hds = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36" } r = requests.grinet(url, headers=hds) print(r.json()) print(r.request.headers)2.用requests 发送 post 请求 1.data传参,传的是表单格式的参数 2.json传参,传的是json格式的参数 具体用data还是json传参,要看接口是如何实现的 金融登录接口url = "http://192.168.2.36:8089/futureloan/mvc/api/member/login" cs = { "mobilephone": "18220820775", "pwd": "123456789", } # 用data传参 r = requests.post(url, data=cs) print(r.text) # 请求头中,'Content-Type': 'application/x-www-form-urlencoded' print(r.request.headers) # 用json 传参 r = requests.post(url, json=cs) print(r.text) # 手机号码不能为空,这个接口不支持用json 传参,参数未识别出来 # 请求头中,'Content-Type': 'application/json' print(r.request.headers) 3.接口测试的网站, 用户发送请求,该网站把收到的请求# 组装成json格式的响应,返回给用户 # /post 是post方法 # /get 是get方法 # delete 是delete 方法 url = "http://www.httpbin.org/post" cs = { "user": "admin", "email": "123456@qq.com" } path = "c:/test.txt" with open(path, mode='r') as f : fs = { # "files" 上传接口的参数名,是接口定义的 "files1": (path, f), # 二元组: (文件名称,文件对象) "files2": (path, f, "text/plain") # 三元组 ![]() } r = requests.post(url, data=cs, files=fs) print(r.text) 4.手动设置Cookie # 没有登录的情况下,访问接口,会跳转到登录页面 url = "https://www.bagevent.com/account/dashboard" r = requests.get(url) print(r.text) # 使用界面登录后,服务器返回的cookie信息,访问该接口,返回登统计页面录后的 hds = { "Cookie": '_ga' } r = requests.get(url, headers=hds) print(r.text) 5.自动管理cookie的机制,创建一个session = requests.session(), 自动维护cookie信息s = requests.session() # 创建session print("登录之前的cookie信息:", s.cookies) #百格登录的接口 url = "https://www.bagevent.com/user/login" cs = { "access_type": 1, "loginType": 1, "emailLoginWay": 0, "account": "2780487875@qq.com ", "password": "qq2780487875", "remindmeBox": "on", "remindme": 1 } r = s.post(url, data=cs) #用session 发送请求 assert "<title>百格活动 - 账户总览</title>" in r.text print("登录之后的cookie信息:", s.cookies) 6.timeout 参数 , 设置请求的超时 1. 接口执行耗时比较久,默认的超时时间内执行不完.比如上传一个2G的大文件 2. 接口性能要求,接口在xx ms内返回结果. 超过xx ms,认为性能不符合要求# 淘宝查询手机号归属地的接口 # tcc.taobao.com/cc/json/mobile_tel_segment.htm url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=180122345678" # 该接口是否能在200毫秒返回结果 for i in range(10): try: r = requests.get(url, timeout=0.2) # print(r.text) print(r.status_code) except Exception as e: print(e) |
欢迎光临 菁英科技(卓目鸟学苑)- 专注软件测试菁英教育 (http://www.zmnxy.com/) | Powered by Discuz! X3.4 |