python+request接口自动化笔记一

一,接口自动化测试理解

1,概念

(1) 接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。

(2) 自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。

(3)故接口自动化测试:让程序或工具代替人工自动完成对接口测试的过程。

2,实现方式

(1)使用接口测试工具来实现,比如:postman、jmeter;

(2)通过编写代码来实现,如(python+requests)

3,测试工具的缺点

(1)测试数据不好控制(无法直接读取或存储json等格式数据)

(2)测试数据加密不方便

(3)扩展性不足(复杂业务逻辑,复杂断言)

二,requests库实现接口测试的方法

1,requests库的介绍

Requests库是使用python编写的,基于urllib,采用Apache2 Licensed开源协议的HTT[库;相比于urllib库,requests库更加方便,封装了大量的接口测试方法,满足接口测试的需要。

2,requests库安装及验证

(1)安装:使用命令 pip install requests

(2)验证:使用命令 pip show requests 可显示响应的版本信息

3,常见的HTTP请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS等。

 

三,常用的请求方式使用方法

1, GET请求

import requests
response = requests.get("http://www.baidu.com")

请求方法的返回值response为Response对象,可以从这个对象中获取所需要的响应信息,用于断言操作。

get方法示例:


'''
目标:GET请求方法
案例:http://www.baidu.com
请求:GET
响应:1,响应对象.url :获取请求的url
      2, 响应对象.status.code 获取响应状态码
      3,响应对象.text 以文本形式显示响应内容
'''
# 1,导包
import requests
# 2,调用get请求
r = requests.get("http://www.baidu.com")
# 3,获取请求的url
print(r.url)
# 4,获取响应状态码
print(r.status_code)
# 5,以文本形式显示响应内容
print(r.text)

 GET请求方法带参数使用总结:

步骤:

  导包:import requests

  调用get方法 request.get()

示例:

  r = request.get("http://www.baidu.com) # r为响应对象

  请求含参数形式:

  (1). http://www.baidu.com?id = 1001

  (2)http://www.baidu.com?id = 1001,1002

  (3) http://www.baidu.com?id = 1001&kw = 上海

  参数:params参数形式

  方式1:params = {"id": 1001}

  方式2:params = {"id": "1001,1002"}

  方式3:params = {"id":1001,"kw":"上海"}

  示例:r = requests.get(url,params = params)

  响应对象作用:

    (1)获取url :r.url

    (2)获取响应状态码 r.status_code

2,POST请求

2.1,作用:添加资源

2.2,应用:

    导包:Import requests

    调用post方法 requests.post()

      示例:requests.post(url,json,hesaders)

2.3,参数:

  (1)url:接口地址

  (2)json:请求报文

  (3)headers:请求头信息

  响应状态:r.status_code

  响应信息:r.json() # 以json文本形式显示响应内容

2.4,post方法示例:

'''
目标:post方法使用
参数:1,json: 传入json数据
      2,headers 传入请求头信息
响应:1,响应对象.json
'''
# 1,导包
import requests
# 2,调用post方法
# 请求url
url = "http://127.0.0.1:8000/api/departments/"
# 请求headers
headers = {"Content-Type":"application/json"}
# 请求json
data = {
    "data":[
        {
            "dep_id":"T01",
            # .....
        }
    ]
}
# 3,调用post方法
r = requests.post(url,json=data,headers = headers)
# 获取响应对象
print(r.json())
# 获取响应状态码
print(r.status_code)

2.5,post方法使用-参数data和json的区别

(1)data:字典对象;json: json字符串

  在python中字典对象和json字符串长得一样,但是后台格式有区别

(2)字典对象与json字符串转换

  导入 json模块

  使用dumps方法将字典对象转换为字符串: json.dumps(data对象)

  使用loads方法将字符串转为字典对象: json.loads(json对象)

扩展:

# python中json.load()、json.loads()、json.dump()、json.dumps()的区别
'''
json.load()从文件中读取json字符串
json.loads()将json字符串转换为字典类型
json.dumps()将python中的字典类型转换为字符串类型
json.dump()将json格式字符串写到文件中
'''

2.6,post请求-响应数据json和text的区别

--1>json():返回的是字典类型,可以通过键名获取响应的值

--2>text : 返回的是字符串类型,无法通过键名来获取响应的值

 

3,delete方法

3.1 作用:删除资源

3.2 应用:导包: import requests

     调用方法:requests.delete()

3.3 响应:

  响应状态码:204

示例:

'''
目标:delete方法使用
案例:删除数据
不需要参数
响应:1,响应状态码:204
'''
# 1,导包
import requests
# 2,调用delete方法
url = ""
r = requests.delete(url)
# 3,获取响应状态码
print(r.status_code)  # 204

 

四,常见的响应对象方法:

请求方法的返回值response为Response对象,我们可以从这个对象中获取所想要的响应信息。

--1:status_code

作用:获取响应状态码

示例:响应对象.status_code

--2:url

作用:获取请求的url地址

示例:响应对象.url

--3:encoding

作用:查看默认请求编码格式:响应对象.encoding

     设置响应编码格式:响应对象.encoding = "utf-8"

--4:cookies

作用:获取响应cookies信息(服务器产生)

示例:响应对象.cookies

--5:text

作用:以文本形式解析响应内容

示例:响应对象.text

--6:content

作用:以字节码形式解析响应内容

示例:响应对象.content

--7:json()

作用:以json字符串形式解析响应内容

示例:响应对象.json()

 

代码示例:

'''
目标:响应对象的常用方法
1,encoding:
    1,1 获取请求编码
    1.2 设置响应编码
2, headers
    2.1 获取响应头信息
'''
# 1, 导包
import requests
# 2,调用get方法
url = "http://www.baidu.com"
r = requests.get(url)
# 3,查看默认请求编码
print(r.encoding)  # ISO-8859-1
# 4,查看响应信息,以text格式
print(r.text)  # 使用ISO-8859-1编码格式,中文部分会乱码
# 5, 设置响应编码
r.encoding = "utf-8"
print(r.text)

# 6, 查看响应头信息, 包含了服务器返回的token,session等信息,比较重要
print(r.headers)

 

posted @ 2021-03-07 17:36  念~  阅读(208)  评论(0)    收藏  举报