我编写了一个带有过滤器函数类的 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
?
Ansible 集合的单元测试:此功能有助于使用 pytest 为 Ansible 集合运行单元测试。它允许您单独验证 Ansible 模块和角色的行为,确保每个组件按预期运行。
分子场景集成:该插件有助于使用 pytest 运行分子场景。这种集成简化了跨不同环境的 Ansible 角色和剧本的测试,从而更轻松地识别和修复不同设置中的问题。
用于 Pytest 测试的 Ansible 集成:通过此功能,您可以在 pytest 测试中无缝使用 Ansible。这提供了与 Ansible 组件交互并执行配置资源、测试配置等任务的可能性,同时利用 pytest 的强大功能和灵活性。