使用Python编写基本测试

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

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

软件包设置

setup.py

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

tests_require=['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 <https://docs.pytest.org>`__ 提供了很多资源,简单来说,您可以编写以 test_ 前缀开头的函数,并包含任何您想要的 assert 语句。

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

运行测试

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

特殊命令

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

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

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

colcon test --event-handlers console_cohesion+