使用 Python 编写基本测试

起点:我们假设您已经设置了一个 basic ament_python package,并且想要向其中添加一些测试。

如果您使用的是 ament_cmake_python,请参阅 ament_cmake_python docs,了解如何使测试可发现。 测试内容和使用 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

测试内容

您现在可以随心所欲地编写测试。 plenty of resources on pytest 上有很多资源,但简而言之,您可以使用 test_ 前缀编写函数并包含您想要的任何断言语句。

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

运行测试

有关运行测试和检查测试结果的更多信息,请参阅 关于如何从命令行 <CLI> 运行测试的教程

特殊命令

除了 标准 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+