requests接口测试的使用—基础篇
2020-07-05 11:28
162 查看
requests接口测试的使用—基础篇
前言:接口工具常用的有jmeter和postman,但同样也可以用python语言中的requests库来写接口自动化脚本,下面介绍 requests中的基础使用。
1. get方法 (通常场景:地址栏输入网址后,点击Enter回车时使用的get方法)
(1). 直接请求网址,不带参数
import requests response = requests.get('http://httpbin.org/get') #对get接口进行get请求,并获取响应信息
示例:
(2). 请求网址,带请求参数
import requests p = {'key1': 'hello', 'key2': 'world'} response=requests.get("http://httpbin.org/get_p",params=p)
示例:
2. post方法 (通常场景:在网页中提交信息的时候使用post方法)
(1). 传递的json格式的参数
import requests p={"key1":"hello","key2":1} response=requests.post("http://httpbin.org/post_p",json=p) print(response.text) #输出: {"key1":"hello","key2":1}
(2). 以html中form得形式传递参数
import requests p={"key1":"hello","key2":1} response=requests.post("http://httpbin.org/post_p",data=p) print(response.text)
(3). form传递得是json格式需要以下面的方式
import requests import json p={"key1":"hello","key2":1} response=requests.post("http://httpbin.org/post_p",data=json.dumps(p)) print(response.text)
3. 查看接口各种类型的响应结果
import requests import json p={"key1":"hello","key2":1} response=requests.post("http://httpbin.org/post_p",data=json.dumps(p)) # 响应信息(response)解析 print(response.text) print(response.content) # 获取状态码 print(response.status_code) # 获取headers信息 print(response.headers) # 获取cookies信息 print(response.cookies) # 获取请求url print(response.url) # 获取反序列化后的得信息 print(response.json()) # 获取响应时间 print(response.elapsed) print(response.elapsed.microseconds) print(response.elapsed.seconds) print(response.elapsed.total_seconds())
注:下面是响应结果的详细解释
1.响应信息(response)解析
print(response.text) print(response.content) 输出结果: 你好 b'\xe4\xbd\xa0\xe5\xa5\xbd' response.text是以str得形式返回得响应信息 response.content是以bytes形式返回 实际使用中根据自己得情况进行选择
2.获取状态码
print(response.status_code) 输出结果: 200
3.获取headers信息
print(response.headers) 输出结果: {'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '6', 'Server': 'Werkzeug/0.14.1 Python/3.6.4', 'Date': 'Sun, 24 Jun 2018 02:55:27 GMT'}
4.获取cookies信息
print(response.cookies) 输出结果: <RequestsCookieJar[]> 注意:这里与其他部分稍有不同,返回cookies的信息为cookies对象,而不是像前面部分返回得是字符串或者字典,cookies解析部分在后面会进行单独说明
5.获取请求url
print(response.url) 输出结果: http://httpbin.org/post_p
6.获取反序列化后的得信息:
print(response.json()) 输出结果: {'name': 'john'} 注意:只有在返回信息为json格式时才能使用,否则会报json异常
7.获取响应时间
print(response.elapsed) print(response.elapsed.microseconds) print(response.elapsed.seconds) print(response.elapsed.total_seconds()) 输出结果: 0:00:00.003773 3773 0 0.003773
————————————————————————————
增加关于json字符串和字典的使用
8、json字符串的使用
如果想要取json字符串的key值,只需要加入for循环
# encoding: utf -8 import requests url1 = "http:www.example.com" requests_result_before = requests.get(url1).json() requests_result_end = requests_result_before["body"]["config"] for key in requests_result_end: print(key) print(type(requests_result_end)) 结果: A B C 输出json里的limit值 ```c # encoding: utf -8 import requests url1 = "http:www.example.com" requests_result_before = requests.get(url).json() requests_result_end = requests_result_before["body"]["config"] print(requests_result_end) for key in requests_result_end: if key == "A": print("111",requests_result_end[key]) print("222", requests_result_end[key][0]) print("333", requests_result_end[key][0]["limit"]) 结果为: {'A': [{'limit': 10}], 'B': [{'limit': 3}], 'C': [{'limit': 3}]} 111 [{'limit': 10}] 222 {'limit': 10} 333 10
9、字典——元组组成字典,列表组成字典
# encoding:utf-8 # 列表组成字典 list1 = ['a', 'b', 'c'] list2 = [1, 2, 3, 4, 5] zipped = zip(list1, list2) print(type(zipped)) print(dict(zipped)) # 元组组成字典 items = [('a', '1'), ('b', 2), ('c', 3)] print(type(items)) d = dict(items) print(d) 结果为 <class 'zip'> {'a': 1, 'b': 2, 'c': 3} <class 'list'> {'a': '1', 'b': 2, 'c': 3}
10、利用get方法得到value值
# encoding: utf-8 # 使用get方法实现电话本的功能 people = { 'Alice': { 'phone': '2341', 'addr': 'Fpp driver 23' }, 'Beth': { 'phone': '9102', 'addr': 'Bar street 42' }, 'Cecil': { 'phone': "3158", 'addr': 'Baz avenue 90' } } lable = { 'phone': 'phone number', 'addr': 'address' } # 字典2作为字典1中value时的取值情况 person = people.get("Beth", {}) print("1111", person) # 字符串作为字典中的value时的取值情况 lable = lable.get("phone","addr") print("2222", lable) 结果为: 1111 {'phone': '9102', 'addr': 'Bar street 42'} 2222 phone number
11、利用字典代替模板中值
# encoding: utf-8 # 这类字符串格式化在模板系统中非常有用 template = """<html> <head><title>%(title)s</title></head> <body> <h1>%(title)s</h1> <p>%(text)s</p> </body> """ data = {"title": "My Home Page", "text": "Welcome to my home page!"} print(template % data)
结果为:
参考:https://www.jianshu.com/p/69bc02a3a7aa
相关文章推荐
- 使用MIDP2.0开发游戏 (1) GameCanvas基础
- 企业信息化系统基础——AD:使用C#批量创建帐号
- C#学习笔记(二十一):使用文件基础
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件 zz
- C#学习笔记(二十一):使用文件基础
- 深入Atlas系列:客户端网络访问基础结构示例(1) - 编写并使用自定义的WebRequestExecutor
- Eclipse基础--使用links方式安装Eclipse插件
- Eclipse基础--使用links方式安装Eclipse插件
- MYSQL的基础使用
- 使用WebServices时候遇到“基础连接以关闭”的问题
- Eclipse基础--使用links方式安装Eclipse插件
- vs2005入门 之 DataList使用基础 [视频]
- C#中使用异步Socket编程实现TCP网络服务的CS的通讯构架(一)----基础类库部分
- Eclipse基础--使用links方式安装Eclipse插件
- Cookie使用基础
- Rational Robot 基础使用手册(七)
- Delphi基础:回调函数及其使用
- [软件架构训练基础教程-10]使用标准
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分