requests接口测试的使用—基础篇

requests接口测试的使用—基础篇

前言:接口工具常用的有jmeter和postman,但同样也可以用python语言中的requests库来写接口自动化脚本,下面介绍 requests中的基础使用。

1. get方法 (通常场景:地址栏输入网址后,点击Enter回车时使用的get方法)

(1). 直接请求网址,不带参数

import requests  

response = requests.get('http://httpbin.org/get') #对get接口进行get请求,并获取响应信息
print(response.url)

示例:
在这里插入图片描述

(2). 请求网址,带请求参数

import requests
p = {'key1': 'hello', 'key2': 'world'}
response=requests.get("http://httpbin.org/get",params=p)
print(response.url)

示例:
在这里插入图片描述

2. post方法 (通常场景:在网页中提交信息的时候使用post方法)

(1). 传递的json格式的参数

import requests

p = {"key1": "hello", "key2": 1}
response = requests.post("http://httpbin.org/post", json=p)
print(response.text)

#输出:

(2). 以html中form得形式传递参数

import requests
p={"key1":"hello","key2":1}
response=requests.post("http://httpbin.org/post",data=p)
print(response.text)

#输出:

(3). form传递得是json格式需要以下面的方式

import requests
import json

p = {"key1": "hello", "key2": 1}
response = requests.post("http://httpbin.org/post", data=json.dumps(p))
print(response.json())

#输出:

3. 查看接口各种类型的响应结果
import requests
import json
p={"key1":"hello","key2":1}
response=requests.post("http://httpbin.org/post",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

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值