Python配置与测试利器:Hydra + pytest的完美结合

简介 :Hydra 和 pytest 可以一起使用,基于 Hydra + Pytest 的应用可以轻松地管理复杂配置,并编写参数化的单元测试,使得Python开发和测试将变得更为高效。

安装:

复制代码
pip install hydra-core pytest

案例源码:my_app.py

python 复制代码
# -*- coding: utf-8 -*-
# time: 2023/06/29 18:01
# file: my_app.py
# 
import hydra
from omegaconf import DictConfig


@hydra.main(config_path="conf", config_name="config", version_base="1.1")
def my_app(cfg: DictConfig) -> int:
    return multiply(cfg.x, cfg.y)


def multiply(x: int, y: int) -> int:
    return x * y


if __name__ == "__main__":
    my_app()

测试用例:test_hy.py

python 复制代码
# -*- coding: utf-8 -*-
# time: 2023/6/29 18:08
# file: test_hy.py
# 

import pytest
from my_app import multiply


@pytest.mark.parametrize("x, y, expected", [(5, 3, 15), (2, 4, 8)])
def test_multiply(x, y, expected):
    assert multiply(x, y) == expected

同级目录下:新建conf目录,新建文件 config.yaml

python 复制代码
# conf/config.yaml
x: 5
y: 3

运行结果:

python 复制代码
(pytf-cpu) C:\Users\>pytest test_hy.py
====================================================================== test session starts ========
platform win32 -- Python 3.8.13, pytest-7.3.1, pluggy-1.0.0
rootdir: C:\Users\
plugins: hydra-core-1.3.2
collected 2 items

test_hy.py ..                                                                                [100%]

======================================================================= 2 passed in 0.04s =========

**注意事项:**Hydra 在 pytest 环境中的行为可能与在常规 Python 环境中的行为略有不同,因为 pytest 可能会干扰 Hydra 的工作方式。如果在测试中遇到任何问题,建议查阅 Hydra 和 pytest 的官方文档,或在相关社区寻求帮助。

实际上,可以利用 Hydra 的强大功能和 pytest 的灵活性,创建更复杂的测试和应用。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
专注仿真1 天前
自动化测试实战项目开发:从零搭建一套可落地的测试框架
自动化测试
秋天的怀念_David3 天前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
五网4 天前
软件测试用例模板怎么写:从用例设计到执行记录的全套指南
软件测试·论文阅读·全文检索·测试用例·论文笔记·用例设计·用例模板
ShuangNaoPai5 天前
饱和品类的心智词生成:从“新米”认知到“五新米”的判定路由
人工智能·程序人生·产品·思维·品牌营销
浮尘笔记7 天前
JetBrains差异设置被自动勾选的排查与根治实录
经验分享·程序人生·编辑器·intellij idea·phpstorm·webstorm
猴哥聊项目管理8 天前
自动化测试管理工具实战:从手工测试到自动化提效的转型路径
自动化测试·测试用例管理·测试管理工具·自动化测试管理工具·手工测试转型
测试界的小码农8 天前
【让 AI 生成的测试用例变成 pytest API 自动化脚本】
人工智能·测试用例·pytest
雪碧聊技术9 天前
软件测试—如何区分静态测试、动态测试?如何区分白盒测试、黑盒测试?一文详解(保姆教程|附软考真题)
软件测试·静态、动态测试·白盒、黑盒测试
秋天的怀念_David10 天前
算法一千零一夜 · 第二十三夜 电力民生写成的曲线
java·程序人生·算法
郝学胜-神的一滴10 天前
AI 编程智能体 22:解析器赋能与实战落地全指南
人工智能·程序人生·游戏·unity·游戏引擎