当前位置:网站首页>接口自动化2.0
接口自动化2.0
2022-08-10 05:35:00 【蓝尼亚】
整体思路如下
针对公司的项目做了些个性化处理:
一、数据处理
1.excel增加是否跑脚本列
有些接口调用比较麻烦:接口A依赖接口B、C、D,而A接口经常调用,其他3个接口很少用,接口A可以拎出单独写
2.接口依赖
接口依赖及处理:
类级别依赖(可以绑定到类属性)、方法级别(绑定到对象属性)、测试函数级别(动态绑定到类属性)
替换数据主要分为2大类:
(1)自定义数据
可以作为一个类的属性,需要该值,用反射获取属性
(2)依赖第三方接口
A依赖B接口返回参数。B返回值可以绑定到类属性/对象属性中,用反射获取对象性
def replace_variables(case_str, objects, type='vary'): # , imei=None, token=None
"""
替换变量和常量
:param case_str: 用例字符串
:param objects: 类名
:param type: vary:用例之间的依赖数据;constant:依赖配置
:return:
"""
flag = '#' if type == 'vary' else r'&'
# 找出需要替换的字符串
re_list = re.findall(f'{flag}.*?{flag}', case_str)
# 替换字符串
for item in list(set(re_list)):
key = item[1:-1]
case_str = case_str.replace(item, getattr(objects, key))
return case_str
二、测试环境常见问题处理
1.发送请求时,测试环境不稳定
发送请求出现异常/403,重试3次
import time
import requests
from common import logger
# requests.post(json=)
def req(url, headers, method='post', if_print=True, **kargs):
"""
发请求:如果出现异常会循环请求|响应为403,会循环请求3次
:param url:
:param headers:
:param method:
:param res_type: 响应类型
:param kargs: 请求其他参数:dict
:return:
"""
i = 0
while i < 3:
try:
logger.debug('============URL============')
logger.debug(url)
logger.debug('============method============\n{}'.format(method))
logger.debug('============headers============\n{}'.format(headers))
if if_print is True:
for key, value in kargs.items():
logger.debug('============{}============\n{}'.format(key.lower(), value))
logger.debug('============请求时间============\n{}'.format(time.strftime('%Y-%m-%d %H:%M:%S')))
res = getattr(requests, method)(url=url, headers=headers, **kargs)
logger.debug('============响应状态码============\n{}'.format(res.status_code))
logger.debug('============响应结果============\n{}'.format(res.text))
if res.status_code == 403:
logger.info('响应状态码为403')
i += 1
continue
except requests.exceptions.RequestException as e:
logger.error(e)
logger.info('错误次数:{}'.format(i))
i += 1
else:
return res
2.正式环境和测试环境跑自动化
测试环境和正式环境只有域名不一样,所以配置的时候,可以域名和接口名分开配置,方便取值
3.保持登录态
web端经常登录态失效,可以把脚本部署到服务器中,每分钟请求一次,保持登录态
边栏推荐
猜你喜欢
样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)
Test of the opposite sex what you look like?
51单片机室内环境甲醛PM2.5光照温度湿度检测及窗帘加湿消毒控制系统
Timer (setInterval) on and off
Flutter Package 插件开发
51单片机智能远程遥控温控PWM电风扇系统红外遥控温度速度定时关机
卷积神经网络(CNN)实现服装图像分类
Radon 变换原理和应用
LeetCode 1720. Decoding XORed Arrays (Simple)
Convolutional Neural Network (CNN) for mnist handwritten digit recognition
随机推荐
I don't like my code
51单片机AD590温度测量ADC0832运放2.73V减法电压变换
PyTorch的安装与基础知识
51单片机营养液自动配置搅拌系统TDS浓度采集自动加水加营养液
Likou - Number of Provinces
LeetCode 938. Range Sum of Binary Search Trees (Simple)
基于MNIST数据集的简单FC复现
学生管理系统以及其简单功能的实现
21天挑战杯MySQL-Day05
Notes for RNN and Decision Tree
Tensorflow 2.0 使用流程详解
链表API设计
Bifrost micro synchronous database implementation services across the library data synchronization
Machine Learning - Clustering - Shopping Mall Customer Clustering
树结构——二叉查找树原理与实现
LeetCode 94.二叉树的中序遍历(简单)
样条曲线(下)之插值问题(贝塞尔曲线、B样条和一般样条曲线插值)
深度学习阶段性报告(一)
pytorch-09.多分类问题
STM32F407ZG TIM通用定时器