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

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

主要以读取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
目录
相关文章
|
1月前
|
API Python
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
95 1
|
10天前
|
API 文件存储 数据安全/隐私保护
python 群晖nas接口(一)
这段代码展示了如何通过群晖NAS的API获取认证信息(SID)并列出指定文件夹下的所有文件。首先,`get_sid()`函数通过用户名和密码登录NAS,获取会话ID(SID)。接着,`list_file(filePath, sid)`函数使用该SID访问FileStation API,列出给定路径`filePath`下的所有文件。注意需替换`yourip`、`username`和`password`为实际值。
51 18
|
8天前
|
API Python
python泛微e9接口开发
通过POST请求向指定IP的API注册设备以获取`secrit`和`spk`。请求需包含`appid`、`loginid`、`pwd`等头信息。响应中包含状态码、消息及`secrit`(注意拼写)、`secret`和`spk`字段。示例代码使用`curl`命令发送请求,成功后返回相关信息。
30 5
|
8天前
|
API 文件存储 Python
python 群晖nas接口(二)
这段代码展示了如何通过API将文件上传到群晖NAS。它使用`requests`库发送POST请求,指定文件路径、创建父级目录及覆盖同名文件的参数,并打印上传结果。确保替换`yourip`和`sid`为实际值。
27 2
|
1月前
|
人工智能 运维 Prometheus
AIOpsLab:云服务自动化运维 AI,微软开源云服务 AI 框架,覆盖整个生命周期
AIOpsLab 是微软等机构推出的开源框架,支持云服务自动化运维,涵盖故障检测、根本原因分析等完整生命周期。
141 13
AIOpsLab:云服务自动化运维 AI,微软开源云服务 AI 框架,覆盖整个生命周期
|
25天前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
51 14
|
22天前
|
人工智能 开发者 Python
Chainlit:一个开源的异步Python框架,快速构建生产级对话式 AI 应用
Chainlit 是一个开源的异步 Python 框架,帮助开发者在几分钟内构建可扩展的对话式 AI 或代理应用,支持多种工具和服务集成。
137 9
|
1月前
|
JSON 安全 中间件
Python Web 框架 FastAPI
FastAPI 是一个现代的 Python Web 框架,专为快速构建 API 和在线应用而设计。它凭借速度、简单性和开发人员友好的特性迅速走红。FastAPI 支持自动文档生成、类型提示、数据验证、异步操作和依赖注入等功能,极大提升了开发效率并减少了错误。安装简单,使用 pip 安装 FastAPI 和 uvicorn 即可开始开发。其优点包括高性能、自动数据验证和身份验证支持,但也存在学习曲线和社区资源相对较少的缺点。
84 15
|
1月前
|
关系型数据库 API 数据库
Python流行orm框架对比
Python中有多个流行的ORM框架,如SQLAlchemy、Django ORM、Peewee、Tortoise ORM、Pony ORM、SQLModel和GINO。每个框架各有特点,适用于不同的项目需求。SQLAlchemy功能强大且灵活,适合复杂项目;Django ORM与Django框架无缝集成,易用性强;Peewee轻量级且简单,适合小型项目;Tortoise ORM专为异步框架设计;Pony ORM查询语法直观;SQLModel结合Pydantic,适合FastAPI;GINO则适合异步环境开发。初学者推荐使用Django ORM或Peewee,因其易学易用。
|
1月前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
80 7

推荐镜像

更多