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


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

    安装:

    pip install hydra-core pytest
    

    案例源码:my_app.py

    1. # -*- coding: utf-8 -*-
    2. # time: 2023/06/29 18:01
    3. # file: my_app.py
    4. # 公众号: 咖啡加剁椒
    5. import hydra
    6. from omegaconf import DictConfig
    7. @hydra.main(config_path="conf", config_name="config", version_base="1.1")
    8. def my_app(cfg: DictConfig) -> int:
    9. return multiply(cfg.x, cfg.y)
    10. def multiply(x: int, y: int) -> int:
    11. return x * y
    12. if __name__ == "__main__":
    13. my_app()
    测试用例:test_hy.py
    
    1. # -*- coding: utf-8 -*-
    2. # time: 2023/6/29 18:08
    3. # file: test_hy.py
    4. # 公众号:咖啡加剁椒
    5. import pytest
    6. from my_app import multiply
    7. @pytest.mark.parametrize("x, y, expected", [(5, 3, 15), (2, 4, 8)])
    8. def test_multiply(x, y, expected):
    9. assert multiply(x, y) == expected

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

    1. # conf/config.yaml
    2. x: 5
    3. y: 3

    运行结果:

    1. (pytf-cpu) C:\Users\>pytest test_hy.py
    2. ====================================================================== test session starts ========
    3. platform win32 -- Python 3.8.13, pytest-7.3.1, pluggy-1.0.0
    4. rootdir: C:\Users\
    5. plugins: hydra-core-1.3.2
    6. collected 2 items
    7. test_hy.py .. [100%]
    8. ======================================================================= 2 passed in 0.04s =========

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

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

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

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

  • 相关阅读:
    HTML 学习笔记 总结
    电路防护-贴片陶瓷气体放电管
    交换机和路由器基础
    【UT】如何进行单元测试
    30-Openwrt config save and restore
    LCOV 工具来统计 Google Test 的代码覆盖率
    Element table分页表单使用筛选
    java计算机毕业设计高校运动会源码+数据库+系统+lw文档+部署
    JAVA毕业设计科技项目在线评审系统计算机源码+lw文档+系统+调试部署+数据库
    火山引擎ByteHouse:4000字总结,Serverless在OLAP领域应用的五点思考
  • 原文地址:https://blog.csdn.net/2301_78276982/article/details/134554548