20191011-构建我们公司自己的自动化接口测试框架-Action的request方法封装
Action模块
封装接口request方法,根据传入的参数调用不同的请求方法,因为项目特色,我们公司的接口都是get和post方法,所以仅仅封装了get和post方法:
import requests
import json
from Util.Log import *
import traceback
def api_request(method,baseurl,header,auth,body,test_case_name):
"""Action关键字,通过method确认使用get还是post方法,baseurl为请求路径,header为空请求头,auth为授权登录信息,body为当请求方法为post的时候请求data信息"""
# global response
default_header = {'Content-Type':'application/json'}
# 如果没有提供请求头信息,则使用默认请求头信息
if not header:
header = default_header
# 如果有头信息,因为excel里面读出来的都是字符串,需要将头信息转换为字典
#get请求
if method.lower() =="get":
try:
if isinstance(body, dict):
info("-"*80)
info("请求接口操作是:%s"%test_case_name)
info("请求的接口地址是:%s" % baseurl)
info("请求的数据是:%s" % body)
r = requests.get(baseurl, params=body,headers=header,auth=auth)
info("请求返回状态码:%s"%r.status_code)
else:
# r = requests.get(baseurl + str(body),headers=header,auth=auth)
r = requests.get(baseurl,headers=header,auth=auth)
info("-"*80)
info("请求接口操作是:%s"%test_case_name)
info("请求的接口地址是:%s" % baseurl)
info("请求的数据是:%s" % body)
info("请求返回状态码:%s"%r.status_code)
return r
except Exception as e:
# print("进入Exception")
info("get 方法请求发生异常:请求的 url 是 %s,请求的内容是%s\n发生的异常信息如下:%s" % (baseurl, body, traceback.format_exc()))
r = None
return r
#post请求
elif method.lower()=="post":
try:
if isinstance(body, dict):
info("-"*80)
info("请求接口操作是:%s"%test_case_name)
info("请求的接口地址是:%s" % baseurl)
info("请求的数据是:%s" % json.dumps(body))
r = requests.post(baseurl,headers = header,data=json.dumps(body),auth=auth)
info("请求返回状态码:%s"% r.status_code)
else:
raise ValueError
except ValueError as e:
info("post 方法请求发生异常:请求的 url 是 %s,请求的内容是%s\n发生的异常信息如下:%s" % (baseurl, body, "请求参数不是字典类型"))
r = None
except Exception as e:
info("post 方法请求发生异常:请求的 url 是 %s,请求的内容是%s\n发生的异常信息如下:%s" % (baseurl, body, traceback.format_exc()))
r = None
return r
详解:
因为项目特点,post方法的'Content-Type'是'application/json',所以我在封装的请求方法里面封装了默认header.同时加入了写log的代码便于以后的bug追溯。
Request方法接收6个参数,分别是
- Method:请求方法名字,
- Baseurl:请求url
- header:请求头
- auth:验证信息
- body:请求body
- test_case_name:请求接口名称,主要是用与写日志记录接口名称
根据传入的请求method选择进行get或者post请求,如果是get方法则提供请求url,请求header,请求授权;如果是post方法则提供请求url,请求头,请求体,请求授权;
在请求之前进行数据的处理,包括如果没有提供请求头的话使用默认请求头,转换请求体为json格式等处理。
在进行请求的操作的时候进行日志记录,记录格式为:
2019-10-11 11:20:57 Log.py[line:30] INFO --------------------------------------------------------------------------------
2019-10-11 11:20:57 Log.py[line:30] INFO 请求接口操作是:*******
2019-10-11 11:20:57 Log.py[line:30] INFO 请求的接口地址是:http://*********************************
2019-10-11 11:20:57 Log.py[line:30] INFO 请求的数据是:*********
20191011-构建我们公司自己的自动化接口测试框架-Action的request方法封装的更多相关文章
- 20191011-构建我们公司自己的自动化接口测试框架-testrun最重要的模块
testrun模块呢就是最终自动化测试入口,调用前面封装的各个模块主要流程是: 1. 获取测试集种待执行的测试用例 2. 处理测试用例获取的数据,包括转换数据格式,处理数据的中的关联等 3. 处理完数 ...
- 20191011-构建我们公司自己的自动化接口测试框架-Util的ClearData模块
cleardata模块主要是用于在每次测试之前清除历史执行痕迹,主要代码如下: from Util.ParseExcel import * from ProVar.ProjConfigVar impo ...
- 20191011-构建我们公司自己的自动化接口测试框架-Util的AssertResult模块
AssertResult主要就是进行结果断言的了,因为断言结果分2种情况,一种是断言词,一种是断言sheet,如果涉及断言sheet,则需要操作excel到对应的断言表断言所有的字段并且书写断言结果主 ...
- 20191011-构建我们公司自己的自动化接口测试框架-Util的TestDataHandler模块
TestDataHandler模块主要是做测试数据的处理,包括转换数据格式和变量参数处理转换数据格式函数: data是数据,data以$()的方式识别变量,如果请求的数据有变量,则将变量用global ...
- 20191011-构建我们公司自己的自动化接口测试框架-Util的getTestSuite模块
getTestSuite主要是用于在testData里面获取测试集以及对应的测试数据,包括2个主要的方法,一个是获取测试集,一个是获取测试集里面要执行的测试用例 获取测试集方法: from Util. ...
- 20191011-构建我们公司自己的自动化接口测试框架-Util的htmlreport模块
生成htmlreport的模块是我在网上随意找的一个版本,主要生成的report包括接口名称,接口url,请求数据,响应数据,断言词,断言结果等 具体的htmlreport代码如下: # -*- en ...
- 20191011-构建我们公司自己的自动化接口测试框架-Util的读取excel常用方法模块
包括获取excel的sheet名字,设定excel的sheet,读excel,写excel等常规操作. from openpyxl import Workbook from openpyxl impo ...
- 20191011-构建我们公司自己的自动化接口测试框架-ProVar模块
ProVar模块主要定义测试数据所在目录,以及定义变量和测试数据excel里面的column对应这样后续在进行excel操作的时候直接使用变量即可进行操作,后期excel的column有增删的时候,修 ...
- 20191011-构建我们公司自己的自动化接口测试框架-Config配置
Config模块主要是为了存放的一些其他配置等的一个目录,当前目录存放日志配置文件 ################################################ [loggers] ...
随机推荐
- 标准6轴机器人正反解(1)-坐标系和MDH参数表
刚来新公司不久,部门给安排了新人作业,我被分到的任务是求标准6轴机器人的正反解,以及利用就近原则选择最优解.从今天开始,逐步将这部分内容总结出来: 本文以及后续文章均使用改进DH法: 连杆坐标系: 坐 ...
- linux和window下生成任意大小的文件
在Windows环境下的实现方法 使用fsutil命令,在windows xp和win 7下应该都自带了这个命令.命令的格式是 fsutil file createnew 新文件名 文件大小.例如 ...
- cross socket和msgpack的数据序列和还原
cross socket和msgpack的数据序列和还原 procedure TForm1.Button1Click(Sender: TObject); begin var pack: TSimple ...
- ArcGIS10.3_解决属性表中文乱码问题
借鉴前辈们解决ArcMap低版本属性表乱码的问题解决方法,勇敢的尝试了一下Pro中的解决方法,其实道理都一样.先来看看第一种方法:打开CMD,如果是ArcMap,输入如下命令: reg add HKE ...
- pytest 基本用法
1.断言用assert,可以进行==,!=,+,-,*,/,<=,>=,is True.False,is not True.False ,in ,not in 等判断. import py ...
- 安装navicat后C盘多了好多链接文件夹
安装完最新的navicat后C盘多了好多连接文件夹 多了一堆链接的文件夹,里面就是 这些文件,但是吧强迫症怎么能让C盘那么多没有用的文件夹存在呢 最起码是这样的吧: 怎么办呢?找navicat的设 ...
- SQL-W3School-测验:SQL 测验
ylbtech-SQL-W3School-测验:SQL 测验 1.返回顶部 1. 您可以通过 W3SCHOOL 的测验程序来测试您的 SQL 技能. 关于本测验 本测验包含 20 道题,每道题的最长答 ...
- web前端之es6对象的扩展
1.属性的简洁表示法 2.属性名表达式 表达式作为对象的属性名 3.方法的 name 属性 例如:函数的name 属性,返回函数名. 4.Object.is() ES 比较两个值是否相等,只有两个运算 ...
- OpenStack Magnum项目简介
1 项目简介 Magnum是OpenStack中一个提供容器集群部署的服务. Magnum是一个Pass层的OpenStack项目. Magnum使用Heat部署一个包含Docker和Kubernet ...
- 树莓派连接显示器后设置ssh服务开机自动开启
进入命令行,然后执行: cd /boot sudo touch ssh sudo restart -r now 然后就重新启动了,重启好了会有依据提示. 然后可以输入ssh localhost进行一下 ...