起点: 我们假设您已经设置了一个基本的 ament_python 包,并希望向其添加一些测试。
如果您使用的是 ament_cmake_python,请参阅 ament_cmake_python 文档以了解如何使测试可被发现。测试内容以及使用 colcon 的调用方式保持不变。
包设置
setup.py
您的 setup.py 必须在 setup(...) 调用内对 pytest 有测试依赖:
extras_require={
'test': ['pytest'],
},测试文件和文件夹
您的测试代码需要放在包根目录下名为 tests 的文件夹中。
任何包含您想要运行的测试的文件都必须符合 test_FOO.py 的模式,其中 FOO 可以替换为任意内容。
示例包布局:
awesome_ros_package/
awesome_ros_package/
__init__.py
fozzie.py
package.xml
setup.cfg
setup.py
tests/
test_init.py
test_copyright.py
test_fozzie.py
测试内容
您现在可以尽情编写测试了。有大量关于 pytest 的资源可供参考,但简而言之,您可以编写带有 test_ 前缀的函数,并包含您想要的任何断言语句。
def test_math():
assert 2 + 2 == 5 # This should fail for most mathematical systems运行测试
有关运行测试和检查测试结果的更多信息,请参阅“如何从命令行运行测试”教程。
特殊命令
除了标准的 colcon 测试命令外,您还可以使用 --pytest-args 标志从命令行向 pytest 框架指定参数。例如,您可以通过以下方式指定要运行的函数名称:
Linux/macOS/Windows:
colcon test --packages-select <name-of-pkg> --pytest-args -k name_of_the_test_function要在运行测试时查看 pytest 输出,请使用以下标志:
colcon test --event-handlers console_cohesion+本文档完整翻译自 ROS 2 Lyrical 官方文档,仅用于学习交流。
夜雨聆风