Pytest接口自动化测试框架搭建模板

火爆全网,Python+Pytest+Allure+Jenkins接口自动化框架(步骤+源码) 1、接口测试基础接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,RPC,Webservice,Dubbo,RESTful等类型。接口测试流程1)需求评审,熟悉业务和需求2)开发提供接口文档3)编写接口测试用例4)用例评审5)提测后开始测试6)提交测试报告两种常见的 HTTP 请求方法:GET 和 POST2、项目说明。 阅读详情

auto_api_test

开发环境: Pycharm

开发语言&版本: python3.7.8

测试框架: Pytest、测试报告: Allure

项目源码Git地址

项目目录结构

  • api – 模仿PO模式, 抽象出页面类, 页面类内包含页面所包含所有接口, 并封装成方法可供其他模块直接调用
  • config – 配置文件目录
  • data – 测试数据目录
  • doc – 文档存放目录
  • log – 日志
  • report – 测试报告
  • scripts – 测试脚本存放目录
  • tools – 工具类目录
  • .gitignore – git忽略
  • app.py – 命令行启动入口
  • pytest.ini – pytest测试框架配置文件
  • README.md – 开发说明文档

代码分析

pytest.ini

pytest框架的配置文件

[pytest]
addopts = --html=../report/report.html    # pytest-html报告插件配置 
;addopts = -s --alluredir report    # allure-pytest报告插件配置
testpaths = ./scripts    # 设置用例目录识别名称
python_files = test*_*.py    # 设置测试文件识别名称
python_classes = Test*    # 设置测试类识别名称
python_functions = test_*    # 设置测试方法识别名称

app.py

# 基础路由(方便在部署环境发生变化时切换全局基础路由)
BASE_URL = "http://xxxx.com"
# 获取脚本的绝对路径(脚本在项目根目录就可以理解为项目路径)
ABS_PATH = os.path.abspath(__file__)
BASE_DIR = os.path.dirname(ABS_PATH)

# 命令行启动此脚本时执行测试用例
pytest.main(["scripts/"])

/config/config.json

配置文件, 目前包含全局请求头配置、类似全局变量的设置, 可通过tools内的工具函数进行读写
请求头具体参数根据需要自行配置

{
  "headers": {
    "Host": "xxx.com",
    "Connection": "keep-alive",
    "Accept": "application/json, text/plain, */*",
    "Authorization": "xxxx",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
    "Content-Type": "application/json;charset=UTF-8",
    "Origin": "http://xxx.com",
    "Referer": "http://xxx.com/",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "zh-CN,zh;q=0.9"
  }
}

/api/template_api.py

页面类模板, 包含页面接口的请求方法(增删改查)封装, 主要在此定义好接口和请求入参等内容

# 导包
import app
import json
from tools.config_info import get_header


class TemplateAPI:
    # xx添加接口
    api_add_url = app.BASE_URL + "/xxx/xxxx/add"
    # xx修改接口
    api_upd_url = app.BASE_URL + "/xxx/xxxx/upd"
    # xx查询接口
    api_get_url = app.BASE_URL + "/xxx/xxxx/get"
    # xx删除接口
    api_del_url = app.BASE_URL + "/xxx/xxxx/del/{id}"

    # xx添加接口函数实现
    def api_add(self, session, attr1, attr2):
        post_data = {
            "attr1": attr1,
            "attr2": attr2
        }
        return session.post(self.api_add_url, headers=get_header(), data=json.dumps(post_data))

    # xx修改接口函数实现
    def api_upd(self, session, attr1, attr2):
        put_data = {
            "attr1": attr1,
            "attr2": attr2
        }
        return session.put(self.api_upd_url, headers=get_header(), data=json.dumps(put_data))

    # xx查询接口函数实现
    def api_get(self, session, attr1, attr2):
        params = {
            "attr1": attr1,
            "attr2": attr2
        }
        return session.get(self.api_get_url, headers=get_header(), params=params)

    # xx删除接口函数实现
    def api_del(self, session, uid):
        return session.delete(self.api_del_url.format(id=uid), headers=get_header())

/scripts/test_template.py

测试类以Test开头, 测试类和测试方法添加allure装饰器

前置测试类方法 - 初始化requests请求库的session对象, 创建对应的页面对象

后置测试类方法 - 关闭session对象

前置测试方法 - 加休眠

测试方法中添加可选参数化装饰器, 测试方法中通过页面对象调用页面接口请求方法, 传入requests的session对象和方法需要的必要参数, 进行响应结果的处理和断言等操作

日志器可通过引入工具调用

# 导包
import pytest
import requests
from time import sleep
from api.template_api import TemplateAPI
from tools.get_log import GetLog
from tools.read_file import read_json
import allure

# 获取日志器
log = GetLog.get_log()


@allure.feature('测试类模板')
class TestTemplate:
    session = None

    # 初始化方法
    @classmethod
    def setup_class(cls):
        cls.session = requests.Session()    # 初始化session对象
        cls.template = TemplateAPI()

    # 结束方法
    @classmethod
    def teardown_class(cls):
        cls.session.close()

    @classmethod
    def setup(cls):
        sleep(1.5)

    # 测试方法
    @allure.story("测试方法模板-add")
    @pytest.mark.parametrize(("attr1", "attr2", "success", "expect"), read_json("test_add"))
    def test_add(self, attr1, attr2, success, expect):
        # 添加功能API调用
        response = self.template.api_add(self.session, attr1, attr2)
        # 打印日志
        log.info("添加功能-状态码为: {}".format(response.status_code))
        # 断言状态码
        assert response.status_code == expect, "状态码断言失败"

    @allure.story("测试方法模板-upd")
    @pytest.mark.parametrize(("attr1", "attr2", "success", "expect"), read_json("test_upd"))
    def test_upd(self, attr1, attr2, success, expect):
        # 添加功能API调用
        response = self.template.api_upd(self.session, attr1, attr2)
        # 打印日志
        log.info("修改功能-状态码为: {}".format(response.status_code))
        # 断言状态码
        assert response.status_code == expect, "状态码断言失败"

    @allure.story("测试方法模板-get")
    @pytest.mark.parametrize(("attr1", "attr2", "success", "expect"), read_json("test_get"))
    def test_get(self, attr1, attr2, success, expect):
        # 添加功能API调用
        response = self.template.api_get(self.session, attr1, attr2)
        # 打印日志
        log.info("查询功能-状态码为: {}".format(response.status_code))
        # 断言状态码
        assert response.status_code == expect, "状态码断言失败"

    @allure.story("测试方法模板-del")
    @pytest.mark.parametrize(("uid", "success", "expect"), read_json("test_del"))
    def test_del(self, uid, success, expect):
        # 添加功能API调用
        response = self.template.api_del(self.session, uid)
        # 打印日志
        log.info("删除功能-状态码为: {}".format(response.status_code))
        # 断言状态码
        assert response.status_code == expect, "状态码断言失败"

/data | /tools

测试数据和具体的操作工具类根据需要自定义

pytest接口测试自动化框架 自动化测试框架pytest 阅读详情

相关推荐

接口自动化测试模板:从零搭建Pytest+Requests分层框架与最佳实践

接口自动化测试是现代软件质量保障的核心环节,其核心原理是通过脚本模拟客户端请求,对服务端接口进行功能、性能及稳定性的验证。这项技术的价值在于将测试人员从重复的手工劳动中解放出来,实现快速、精准、可重复的回归测试,从而提升软件交付效率与质量。在实际工程实践中,一个设计良好的自动化测试框架是成功的关键,它需要解决环境配置、用例管理、数据驱动和报告生成等通用问题。本文聚焦于构建一个高内聚、低耦合的“接口自动化测试模板”,详细拆解了基于Pytest和Requests的四层核心架构,并深入探讨了如何利用数据驱动和Py

weixin_28681255的博客 342

pytest+yml+allure实现接口自动化框架(终版)

基于pytest+allure实现的接口自动化框架。主要就是实现了yml管理case的功能。 以及参数中变量的处理、参数的传递、接口a依赖接口b返回值的处理。可以满足绝大部分的接口应用场景。我自己也在用,好用!

喵酱 4495

基于Pytest+Allure+Aiohttp的现代化接口自动化测试框架实战

接口自动化测试是保障软件质量、提升交付效率的关键实践。其核心原理是通过脚本模拟客户端请求,对服务端接口进行功能、性能及稳定性的验证,从而替代大量重复的手工测试。在微服务与持续集成/持续部署(CI/CD)成为主流的今天,一个高效、易维护的自动化测试框架能显著降低回归测试成本,并快速反馈版本质量。本文聚焦于如何利用Pytest强大的测试组织与Fixture机制、Allure生成直观可交互的测试报告,并结合Aiohttp的异步HTTP客户端能力,构建一个能应对高频迭代与复杂场景的现代化测试解决方案。该方案尤其强调

weixin_28829339的博客 301

API接口自动化框架(Pytest+Request+Allure/Pytest-html+Loguru)

框架主要使用 python 语言编写,结合 pytest 进行二次开发,用户仅需要在 yaml 或者 excel 文件中编写测试用例, 编写成功之后,会自动生成测试用例代码,零基础代码小白,也可以操作。

Flora's Zone 2846

Python接口自动化测试实战:requests库与pytest框架

接口自动化测试是现代软件开发中确保API质量的关键技术,通过模拟HTTP请求验证接口功能与性能。Python生态中的requests库以其简洁的API设计和强大的会话管理能力,成为最受欢迎的HTTP客户端工具。结合pytest测试框架,可以构建包含智能重试、连接池复用等企业级特性的测试方案。在电商平台、微服务架构等场景中,此类方案能将原本需要数小时的手工测试压缩到秒级完成,实现800倍以上的效率提升。通过配置HTML测试报告与Jenkins持续集成,还能形成完整的质量保障体系。

weixin_34072296的博客 203

自动化测试 python测试 pytest 单元测试

The pytest framework makes it easy to write small, readable tests, and can scale to support complex functional testing for applications and libraries. pytest requires: Python 3.7+ or PyPy3. PyPI package name: pytest A quick example # content of test_sample.py def inc(x): return x + 1 def test_answer(): assert inc(3) == 5 To execute it: $ pytest =========================== test session starts ============================ platform linux -- Python 3.x.y, pytest-7.x.y, pluggy-1.x.y roo

Pytest接口自动化测试框架搭建模板_pytest封装的接口自动化框架

测试方法中添加可选参数化装饰器, 测试方法中通过页面对象调用页面接口请求方法, 传入requests的session对象和方法需要的必要参数, 进行响应结果的处理和断言等操作。配置文件, 目前包含全局请求头配置、类似全局变量的设置, 可通过tools内的工具函数进行读写。页面类模板, 包含页面接口的请求方法(增删改查)封装, 主要在此定义好接口和请求入参等内容。前置测试类方法 - 初始化requests请求库的session对象, 创建对应的页面对象。测试数据和具体的操作工具类根据需要自定义。

2401_84254474的博客 877

电子纸价签实战:基于SSD1680的墨水屏驱动开发与优化

本文详细介绍了基于SSD1680驱动芯片的电子纸价签开发实战,涵盖硬件连接、驱动框架搭建、核心流程解析及性能优化。重点剖析了初始化配置、波形文件加载、图像数据写入与刷新触发等关键步骤,并提供了功耗优化、显示效果提升及代码健壮性等实用避坑指南,帮助开发者高效实现稳定低功耗的墨水屏驱动。

weixin_28278377的博客 227

Pytest接口自动化测试框架搭建模板_pytest封装的接口自动化框架(1)

测试方法中添加可选参数化装饰器, 测试方法中通过页面对象调用页面接口请求方法, 传入requests的session对象和方法需要的必要参数, 进行响应结果的处理和断言等操作。配置文件, 目前包含全局请求头配置、类似全局变量的设置, 可通过tools内的工具函数进行读写。页面类模板, 包含页面接口的请求方法(增删改查)封装, 主要在此定义好接口和请求入参等内容。前置测试类方法 - 初始化requests请求库的session对象, 创建对应的页面对象。后置测试类方法 - 关闭session对象。

2401_84302583的博客 709

Versal - 从零构建Petalinux 2024.2 AI边缘计算平台(VD100+SDT+JupyterLab实战)

本文详细介绍了如何从零开始,基于AMD Versal VD100开发板和Petalinux 2024.2构建AI边缘计算平台。内容涵盖开发环境搭建、Petalinux工程创建与配置、SDT新流程实战、启动SD卡制作,并最终集成JupyterLab与Conda,打造出开箱即用的交互式AI开发环境,帮助开发者快速进行算法验证与部署。

5f4d3s2a1q的博客 487

大模型训练方法全面解析:SFT、RFT、TRPO、DPO、PPO、GRPO、RLH、RLHF技术深度剖析

大模型训练方法全面解析 本文系统介绍了当前主流的大模型训练和对齐技术,包括监督微调(SFT)、拒绝采样微调(RFT)、信任域策略优化(TRPO)、直接偏好优化(DPO)、近端策略优化(PPO)等。这些方法各有特点:SFT简单高效但数据依赖性强;RFT通过质量筛选提升输出质量;TRPO训练稳定但计算复杂;PPO是RLHF核心算法,平衡探索与利用。文章详细分析了各方法的实现原理、优势劣势及适用场景,为开发者选择合适的大模型训练策略提供参考。

2794

浅谈Python+requests+pytest接口自动化测试框架的搭建

1、这里每一个文件对应一个接口所需要的测试数据,命名规则为nameA.xlsx或者nameA.yaml(nameA泛指待测接口名称),文件里面可以存放调用接口所需的参数name、参数value、所需cookie、预期输出结果--封装的断言方法,用于验证接口返回值和预期结果是否一致config.py--封装读取配置文件的方法--把测试数据加工成接口所需要的格式log.py--封装的记录日志的方法request.py--封装的https请求方法,主要是post和get。

qq_48811377的博客 927

小样本物体检测

Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector 关键:提出了一个小样本数据集:数据集 步骤: 提取support img为一过滤特征 使用support img的特征来过滤query img,最后将过滤后的特征输入RPN网络中 RPN网络层的输出,会进行多头判断,使用全局信息检测,使用局部信息检测,一对多检测 Attention-Based Region Proposal Network Increme

qq_21157073的博客 5266

阿里测开带你30天学完自动化测试从入门到入职极限压缩精品教程,碾压99%速成教程

一、接口自动化测试的流程1、需求分析1、1请求(url,方法、数据)2、挑选需要做自动化测试的接口3、设计自动化测试用例4、搭建自动化测试环境5、设计自动化执行框架(报告、参数化、 用例执行框架)6、编写代码7、执行用例(unittest、pytest)8、生成测试报告(htmltextrunner\allure)二、用例设计2、1单接口模板:id,模块,接口名称,请求url,用例名称,请求方法,请求参数类型,请求参数,预期结果,实际结果,备注注意:单接口颗粒度放的比较小(以测试数据为颗粒度)2、2多接口模

测试逍遥子的博客 289

使用PaddleOCR识别查验平台验证码

PaddleOCR识别国税查验平台验证码

m0_63932300的博客 1266

SAP 系统和银行系统通过 SM2 加密算法进行集成

SM2 是基于椭圆曲线离散对数问题(ECDLP)的一种公钥密码算法。椭圆曲线加密的核心原理,是利用了一个数学难题:在椭圆曲线群上,已知曲线上两点的运算结果,逆向推导出这两个点的具体信息是非常困难的。这样的复杂度使得基于椭圆曲线的密码体制比传统的 RSA 更加难以破解。在 SM2 加密中,公钥和私钥的生成与传统的椭圆曲线加密类似。选择一个椭圆曲线和一个基点 P。使用私钥 d,计算公钥 P’ = d * P。私钥 d 保密,而公钥 P’ 可公开分发,用于加密数据。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1211

Python+Requests接口自动化测试实战指南

接口自动化测试是现代软件研发中提升效率的关键技术,通过模拟HTTP请求验证系统功能。Python的requests库以其简洁的API设计成为首选工具,配合pytest等框架可实现完整的测试流程。在电商、金融等行业中,自动化测试能显著降低回归成本,例如某电商项目通过自动化将200+接口的测试时间从2天缩短至分钟级。本文重点探讨requests库的高级用法(如会话保持、重试机制)以及企业级测试框架搭建方案,涵盖数据驱动测试、性能优化和安全测试整合等实战场景。针对测试人员常见的连接超时、鉴权失效等问题,提供了详细

weixin_33391446的博客 104

基于Python的虚拟货币社区情绪分析与市场价格预测爬虫实现

本文探讨了如何利用Python爬虫技术获取虚拟货币社区数据,并通过情感分析预测市场价格走势。我们将使用最新的异步爬虫框架、自然语言处理技术和机器学习模型,构建一个完整的社区情绪分析系统。本文提供了详细的代码实现和理论解释,适合作为毕业设计参考。关键词:Python爬虫、虚拟货币、情感分析、价格预测、异步爬虫、机器学习爬虫框架aiohttp和httpx用于异步HTTP请求HTML解析和parsel数据存储MongoDB和Pandas用于数据处理自然语言处理库和VADER情感分析工具机器学习和。

2201_76125261的博客 521
上一篇: Flask接收带文件表单请求
下一篇: vscode的vim拷贝粘贴到系统剪切板
Noobovo
博客等级 码龄11年 57粉丝 59原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Noobovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值