首页 > 编程语言 >接口自动化框架(Python)之 三,base.py的配置

接口自动化框架(Python)之 三,base.py的配置

时间:2022-12-13 10:07:23浏览次数:39  
标签:Python py write url wt base data color row


 

主要以读取excel表的信息:
 

# -*- coding:utf-8 -*-
# @Time : 2019-10-23
# @Author : carl_dj

import json
import requests
from openpyxl.styles import colors
from Interface_python3.public.http_service import HTTP
from Interface_python3.public import config,read_excel,write_excel



# 拼接url,path参数是域名后面的虚拟目录部分
def get_url(path):
return ''.join([config.base_url, path])


# 封装requests请求方法,方法参数为:请求方式,接口url,请求参数
def get_response(method, url, **DataALL):
if method == 'get':
resp = HTTP().get(url, **DataALL)
elif method == 'put':
resp = HTTP().put(url, **DataALL)
elif method == 'post':
resp = HTTP().post(url, **DataALL)
elif method == 'delete':
resp = HTTP().delete(url, **DataALL)
else:
return "no the method"
resp.encoding = 'UTF-8'
return resp


# 封装requests请求方法,请求参数testdata数据是从Excel表读取的
def get_excel_response(testdata):
method = testdata["method"] # 请求方式
url = testdata["url"] # 请求url

# url后面的params参数
try:
params = eval(testdata["params"])
except:
params = None

# 请求头部headers
try:
headers = eval(testdata["headers"])
except:
headers = None

# post请求body内容
try:
bodydata = eval(testdata["body"])
# 可在这里实现excel的body里面某个字段动态赋值,实现接口参数的关联,如token
if 'accessToken' in testdata["body"]:
bodydata['accessToken'] = config.accessToken
except:
bodydata = {}

# post请求body类型,判断传data数据还是json
type = testdata["type"]
if type == "data":
body = bodydata
elif type == "json":
body = json.dumps(bodydata)
else:
body = json.dumps(bodydata)

# 发起网络请求,并返回数据
try:
r = requests.request(method=method,
url=url,
params=params,
headers=headers,
data=body)
r.encoding = 'UTF-8'
return r
except Exception as msg:
return msg


# 这个是二次封装读取Excel表数据,返回的data是列表类型,列表中子元素是字典类型
def get_excel_data(file_name, sheet_name):
# fileName是文件名(要带后缀),sheetName是表名
sheet = read_excel.ReadExcel(config.test_data_path + file_name, sheet_name)
data = sheet.get_dict_data()
return data


# 这个是二次封装写入Excel表数据,fileName是文件名,sheetName是表名,r是网络请求结果
def write_to_excel(file_name, sheet_name, test_data, r):
# 这里的文件夹路径要修改为你的
write_excel.copy_excel(config.test_data_path + file_name) # 复制备份一份测试数据
wt = write_excel.WriteExcel(config.test_data_path + file_name, sheet_name)
row = test_data.get('rowNum')
color = colors.BLACK
try:
if test_data.get('isCheckStatusCode'):
if str(r.status_code) == test_data.get('checkpoint'):
wt.write(row, 12, "pass", color) # 测试结果 pass
else:
color = colors.RED
wt.write(row, 12, "fail", color) # 测试结果 fail
else:
if test_data.get("checkpoint") == '':
wt.write(row, 12, "checkpoint为空", colors.RED) # 没有设置检查点的值
elif test_data.get("checkpoint") in r.text:
wt.write(row, 12, "pass", color) # 测试结果 pass
else:
color = colors.RED
wt.write(row, 12, "fail", color) # 测试结果 fail

wt.write(row, 10, str(r.status_code), color) # 写入返回状态码statuscode,第8列
wt.write(row, 11, str(r.elapsed.total_seconds()), color) # 耗时
wt.write(row, 13, r.text, color) # 响应内容
wt.write(row, 14, "") # 异常置空
wt.wb.close()
except Exception as msg:
color = colors.RED
wt.write(row, 10, "")
wt.write(row, 11, "")
wt.write(row, 12, "fail", color)
wt.write(row, 13, "")
wt.write(row, 14, str(r), color)
wt.wb.close()
return wt

 

标签:Python,py,write,url,wt,base,data,color,row
From: https://blog.51cto.com/u_15910936/5932497

相关文章