我完成了对三个Ansible定制模块的编码,这些模块存储在Ansible Tower项目使用的Git存储库中。目录树如下所示:
> files/
> - a.txt
> - b.txt
> library/
> - common_code.py
> module_utils/
> - custom_module1.py
> - custom_module2.py
> templates/
> - c.txt.j2
> - d.txt.j2
> playbook.yml
我找不到应该存储自定义模块单元测试甚至module_utils单元测试的地方?在py文件旁边?最好的做法是什么?
谢谢。
通过添加测试目录和多个__init__.py
文件,我采用了更为传统的方式:
> files/
> - a.txt
> - b.txt
> library/
> - __init__.py
> - common_code.py
> module_utils/
> - __init__.py
> - custom_module1.py
> - custom_module2.py
> templates/
> - c.txt.j2
> - d.txt.j2
> tests/
> - __init__.py
> - test_custom_module1.py
> - test_custom_module2.py
> - test_common_code.py
> playbook.yml
并导入其他文件以在像这样的单元测试中进行测试:
from module_utils.custom_module1 import *
from module_utils.custom_module2 import *
from library.common_code import *
我必须在自定义模块中修改导入:
try:
from ansible.module_utils.common_code import util
except ImportError: # We except an ImportError in unit tests so we import it differently :D
from module_utils.common_code import util
并添加了一些特定的异常来处理exit_json和fail_json,如here所述>>