「这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战」。
说实话,我比较反对上来一顿操作就封装,但是如果你不封装,是不是又觉得比较low?所以还是想封装一把,它真香!
建议:
python可以先面向过程编程,将一个个的方法作用定义清楚了,再一步步的提炼精华,达到珠圆玉润的效果,这样有利于往后的面向对象编程。而且思想这东西,任何时候也不会是固定的,纵使你封装的再好,那么还会有更好,我们称之为重构;所以既然看官能花点钱买入这里,咱就不能只给大家讲基础的,不然会索然无味,下面直切主题:
1、选择python语言搭建接口测试框架,主要会用到的python库有:requests、unittest、DDT、openpyxl、HTMLTestRunner等;另外还会有pymysql、configparser、email等工具类库;
在此之前,先来思考几个问题:
- 框架是什么?
a.最佳实践总结
b.对预期结果的评估
c.测试工具集或测试库
d.离不开标准化的编码
复制代码
- 为什么要引入自动化测试?
a.解放双手,利用更多的时间去完成自动化解决不了的问题
b.无人值守,可重复测试、提升自动化测试活动效率
c.较低的维护成本,清晰的测试报告
复制代码
- 如何选择自动化测试框架?
a.明确目标做哪个层级的自动化测试,以达到什么样的目的?
b.测试数据如何有效管理:excel、数据库、数据关联等等?
c.是否具备自动化测试环境?
d.自动化测试应该具备什么能力?报告?日志?什么样的结果才能达到自动化测试的预期?
e.自动化测试效率、执行过程及结果的受众?报告如何、何时发送?
f.选用什么样的框架?工具、编程语言?
复制代码
- 封装一个http请求公共类,直接上源码:
import requests
import json
from common.HandleLogging import log
class HandleRequests(object):
'''
封装一个公共http请求工具类
'''
def __init__(self):
'''
构造方法,初始化requests请求方法,为了保持下一个接口请求的headers一致,故而初始为Session
'''
self.session = requests.Session()
def __call__(self, method, url, data=None, is_json=False, **kwargs):
'''
封装一个可以被直接调用的方法
:param method: 请求方法
:param url: 请求地址
:param data: 请求参数
:param is_json: 是否json格式
:param kwargs: 占位,可自定义headers
:return: 返回一个请求结果
'''
# 请求方法的参数转成小写,也可以是大写upper()
method = method.lower()
# 判断请求参数是否是str类型的json格式
if isinstance(data, str):
try:
data = json.loads(data) # 将json的字符串转成dict
except Exception as e:
log.info("str字符串json数据处理异常:{}".format(e))
if len(data) > 0:
data = eval(data)
# 请求方法
if method == 'get':
res = self.session.request(
method=method, url=url, params=data, **kwargs)
elif method == 'post':
if is_json: # 如果是json格式的请求参数,是用json
res = self.session.request(
method=method, url=url, json=data, **kwargs)
else:
res = self.session.request(
method=method, url=url, data=data, **kwargs)
else:
log.info("[{}]该请求方法暂不支持。".format(method))
# session需要关闭资源
# self.session.close()
# json.loads(res.text)不确定返回的一定是json,所以还是还原:res
return res
复制代码




近期评论