背景痛点:
落地自动化项目过程中,不难发现有很多常用的前置造数据步骤,倘若每次都是直接编写代码或者复制粘贴业务接口模块,会造成代码冗余,可读性差的问题。
同理,后置的数据源校验,也可以实现业务封装。
除此之外,还可以针对通用性高的请求方法进行封装。
实现理念:
前置处理的封装
具备这2个条件可封装:
多条用例都会复用
前置过程冗余,涉及多个步骤或多接口的调用
import time
import requests
from common.logsMethod import info
from common.yamlRead import YamlRead
class CreateXX:
"""创建XX数据"""
envConfig = YamlRead().env_config()
dataConfig = YamlRead().data_config()
cid1 = envConfig["cid1"]
userid1 = envConfig["userid1"]
host = envConfig["host"]
url_home_XX_list = host + dataConfig["getHomeListXX"]['path'] # 获取首页XX
url_set_XX_content = host + dataConfig["setXXContent"]['path'] # 更新XX内容
url_set_XX_info = host + dataConfig["setXXInfo"]['path'] # 更新XX主体
url_XX_remind = host + dataConfig["getXXRemind"]['path'] # 获取下XX
url_delete_XX = host + dataConfig["deleteXX"]['path'] # 软删除XX
url_clean_recycle_bin = host + dataConfig["deleteRecycleBin"]['path'] # 删除回收站内XX
def create_XX(self, userid, cid, num):
XXs_list = []
for i in range(num):
# 前置
headers = {
"Content-Type": 'application/json',
"Cookie": f"XXcid={cid}",
}
XX_id = str(int(time.time() * 1000)) + '_XXId'
body = {
"XXId": XX_id
}
res = requests.post(url=self.url_set_XX_info, headers=headers, json=body)
info_version = res.json()['infoVersion']
body = {
"XXId": XX_id,
'title': 'a',
'summary': 'a',
}
XXs_list.append(body)
requests.post(url=self.url_set_XX_content, headers=headers, json=body)
info(f"前置新建第{i+1}条XX成功")
return XXs_list
数据源校验的方法
数据源查询方法封装起来,提高使用便利性
同前置的封装一致
请求方法
封装的设计理念:
不同的请求方法都封装不同的函数
通用的业务数据封装在框架
必要的日志输出
满足接口请求的超时
修改场景比较少的变量,提供默认值,比方说headers
返回值需要直接返回处理结果
import requests
from common.logsMethod import info, error
def get(url, cid, headers=None):
if headers is None:
headers = {'Cookie': f'XXcid={cid}'}
info(f"【requests】url:{url}")
info(f"【requests】headers:{headers}")
try:
res = requests.get(url=url, headers=headers, timeout=30)
except TimeoutError:
error("requests timeout!")
return "requests timeout!"
info(f'【response】code:{res.status_code}')
info(f'【response】body:{res.text}')
return res