乐于分享
好东西不私藏

机器人系统——ROS2文档(进阶)—使用 Python 编写基本测试

机器人系统——ROS2文档(进阶)—使用 Python 编写基本测试

起点: 我们假设您已经设置了一个基本的 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 官方文档,仅用于学习交流。