之前的几篇将pytest常用的功能都介绍的差不多了,后面接下来会介绍基于pytest基础上实现一个基本功能的接口自动化测试框架
一个接口自动化测试框架一般包括以下部分:
一、requests介绍
我们做接口自动化测试之前,发送请求是我们的第一步,然后再获取响应,做相关的断言。python给我提供了一个requests,是专门用来处理http请求的。通过pip命令安装
pip install requests
二、requests基本使用
1.发送get请求
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
r = requests.get("http://127.0.0.1:5000/api/Account/GetToken")
print(r) #打印返回的响应对象
print(r.content) #打印响应二进制nei r
print(r.text) #打印响应的文本
print(r.json()) #打印返回json格式的文本
2.发送带参数的get请求
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
data = {"key1": 1, "key2": 2}
r = requests.get("http://127.0.0.1:5000/api/Account/GetToken", params=data)
print(r)
print(r.content)
print(r.text)
print(r.json())
print(r.url)
# 打印的url是
# http://127.0.0.1:5000/api/Account/GetToken?key1=1&key2=2,已经把参数加到rul上面
3.发送带post请求
data = {
"bookType": 1
}
r = requests.post("http://127.0.0.1:5000/book/list", data=data)
print(r.json())
#如果是json格式的话可以通过json参数
data = {
"bookType": 1
}
r = requests.post("http://127.0.0.1:5000/book/list", json=data)
print(r.json())
4.发送带put请求
data = {
"shopType": 1
}
r = requests.put("http://127.0.0.1:5000//bookmall/api/v1/organization/list/shops", json=data)
print(r.json())
# put请求和post类似
5.发送带delete请求
data = {
"token": "58ac23a0d30841ca83d1d05cfdcb7665"
}
r = requests.delete("http://127.0.0.1:5000/api/Account/DelToken", params=data)
print(r.json())
# delete和get类似
三、requests接入pytest
新建test_requests,示例代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
class Testrequests:
def test_requests(self):
url = "http://127.0.0.1:5000/book/list"
data = {"bookType": 1}
r = requests.post(url=url, json=data)
print(r.json())
接口返回的内容
{
"data": {
"list": [
{
"author": "人民美术出版社",
"binding": "",
"booksDisplayList": [
{
"author": "人民美术出版社",
"isbn": "9787102078762",
"location": "14010056(南区艺术设计店)",
"qty": "",
"shopId": 1101,
"shopName": "中心书城",
"title": "人美画谱-八大山人 山水"
}
],
"clscode": "1704000000",
"clsname": "绘画",
"imageUrl": "http://image.szbookmall.com/500/4993/089/4993089_500.jpg",
"isbn": "9787102078762",
"pages": 0,
"price": 49.0,
"pubdate": "2018-06-01",
"pubname": "人美",
"title": "人美画谱-八大山人 山水",
"translator": ""
}
],
"total": 1
},
"respCode": 10000000,
"respMark": "",
"respMessage": "success"
}
那我们可能关注接口返回的内容有respCode,total等,我们先断言respCode,修改示例代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
class Testrequests:
def test_requests(self):
url = "http://127.0.0.1:5000/book/list"
data = {"bookType": 1}
r = requests.post(url=url, json=data)
assert r.json()['respCode'] == 10000000
# r.json()['respCode']是获取respCode的值,然后断言
上述就是requests结合pytest简单的实践,更多的使用方法可以查看requests文档,还是中文的哦!
https://docs.python-requests.org/zh_CN/latest/user/quickstart.html#id2
下篇会分享下requests的封装