您的位置:首页 > 产品设计 > UI/UE

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: