前言
主流接口设计是restful,restful概括如下:
1.每个URL是一个资源
2.通过四个动作拿到资源,get post put delete
本文介绍通过python发送get post put delete四种请求。
GET请求
import requests
import json
import random
from common import test_login
class TestDemo:
#调接口获取header(header中包含token)
def test_token(self):
headers = test_login.Testlogin.test_get_token(self)
return headers
#调接口请求设备类型
def test_template_get(self):
url = 'https://XXXX/api/thing-device/v1/thingtemplate'
payload = {'size': 1}
r = requests.get(url, params=payload, headers=self.test_token())
# 将字符型转为字典型
obtain = json.loads(r.text)
# 提取templateId
templateId = obtain['data']['rows'][0]['templateId']
print(templateId)
return templateId
导入requests,需要字典和json格式转换导入json,设备名称不能重复导入随机函数random。
test_login是登陆,放在common路径下,发送请求header中带token,导入test_login。
引用其他文件夹的方法,格式如下:
headers = test_login.Testlogin.test_get_token(self)
test_login是模块名
Testlogin是测试类
test_get_token是方法
引用同一模块的方法,格式如下:
a = self.test_token()
r = requests.get(url, params=payload, headers=self.test_token())
POST请求
def test_thing_post(self):
url = 'https://XXX'
payload ={
"description": "9810273721",
"deviceId": random.randrange(20, 999999, 1),
"enable": True,
"templateId": self.test_template_get(),
"title": random.randrange(20, 999999, 1)
}
# 将python对象转码成json字符串
# payload = json.dumps(payload)
r = requests.post(url, headers=self.test_token(), json=payload)
print(r.text)
assert r.status_code == 200
assert r.json()['message'] == "新增成功"
r = requests.post(url, headers=self.test_token(), data=payload)
payloa是python对象,直接请求接口报错,有两种方法:
1.payload = json.dumps(payload)
将python对象转码成json字符串
2.请求接口时,将data=payload改为json=payload
其他:
1.python中bool型需要首字母大写,True False
2.随机整数random.randrange(20, 999999, 1)
PATCH
def test_template_patch(self):
url = f'https://XXXXX/{self.test_template_get()}'
payload = {
"templateName": "123",
"description": ""
}
print(url)
print(payload, u'数据类型:', type(payload))
r = requests.patch(url, json=payload, headers=self.test_token())
print(r.text)
print(r.request.headers)
assert r.json()['message'] == "修改成功!"
DELETE
def test_thing_delete(self):
url = f'https://XXXXXX/{self.test_thing_get()}'
print(url)
r = requests.delete(url, headers=self.test_token())
print(r.text)
assert r.status_code == 200
assert r.json()['message'] == "删除成功"