使用Python编写基本测试 [5687]

起点:我们假设您已经设置了一个 基本的ament_python包,并且您想为其添加一些测试。 [5688]

如果您使用的是 ament_cmake_python,请参考 ament_cmake_python 文档 了解如何使测试可被发现。测试的内容和使用 colcon 运行测试的方式保持不变。 [5689]

软件包设置 [5678]

setup.py [5690]

您的 setup.py 在调用 setup(...) 时必须添加对 pytest 的测试依赖: [5691]

tests_require=['pytest'],

测试文件和文件夹 [5692]

您的测试代码需要放在包的根目录下名为 tests 的文件夹中。 [5693]

任何包含您想要运行的测试的文件必须符合 test_FOO.py 的模式,其中的 FOO 可以替换为任何内容。 [5694]

示例软件包布局: [5695]

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

测试内容 [5696]

您现在可以尽情编写测试。pytest <https://docs.pytest.org>`__ 提供了很多资源,简单来说,您可以编写以 test_ 前缀开头的函数,并包含任何您想要的 assert 语句。 [5697]

def test_math():
    assert 2 + 2 == 5   # This should fail for most mathematical systems

运行测试 [5685]

有关如何从命令行运行测试和检查测试结果的详细信息,请参阅 教程[5686]

特殊命令 [5698]

除了 标准 colcon 测试命令 之外,您还可以通过命令行使用 --pytest-args 标志指定 pytest 框架的参数。例如,您可以指定要运行的函数的名称: [5699]

colcon test --packages-select <name-of-pkg> --pytest-args -k name_of_the_test_function

要在运行测试时查看 pytest 输出,请使用以下标志: [5700]

colcon test --event-handlers console_cohesion+