如何为 Ansible 过滤器函数编写单元测试

问题描述 投票:0回答:1

我编写了一个带有过滤器函数类的 Ansible 角色,位于

my_role/filter_plugins/MyFilterClass.py
。我想为 Python 类编写一个单元测试(仅测试 Python 代码,而不是使用 Molecule 测试整个角色)。我在测试设置上遇到了困难。我找到了以下解决方案,但我不确定我所做的是否被认为是最佳实践: 我已将单元测试放在

my_role/test/MyFilterClassTest.py

中。我已将以下代码(来自

这个答案
)添加到文件顶部,以便能够导入我的类: import os import sys import pathlib import unittest PACKAGE_PARENT = pathlib.Path(__file__).parent.parent SCRIPT_DIR = PACKAGE_PARENT / "filter_plugin" sys.path.append(str(SCRIPT_DIR)) from MyFilterClass import FilterModule # Unit test goes here ...

有没有更好的方法来做到这一点,也许使用不同的文件夹结构/命名约定和
ansible-test

    

python unit-testing ansible
1个回答
0
投票
https://github.com/ansible/pytest-ansible

似乎很有希望

pytest-ansible 插件旨在提供 pytest 和 Ansible 之间的无缝集成,使您能够在 pytest 测试套件中高效地运行和测试与 Ansible 相关的任务和场景。该插件通过提供三个不同的功能来增强测试工作流程:

Ansible 集合的单元测试

:此功能有助于使用 pytest 为 Ansible 集合运行单元测试。它允许您单独验证 Ansible 模块和角色的行为,确保每个组件按预期运行。

分子场景集成

:该插件有助于使用 pytest 运行分子场景。这种集成简化了跨不同环境的 Ansible 角色和剧本的测试,从而更轻松地识别和修复不同设置中的问题。

用于 Pytest 测试的 Ansible 集成

:通过此功能,您可以在 pytest 测试中无缝使用 Ansible。这提供了与 Ansible 组件交互并执行配置资源、测试配置等任务的可能性,同时利用 pytest 的强大功能和灵活性。

© www.soinside.com 2019 - 2024. All rights reserved.