CMake py.test 检测?

Mir*_*iaš 5 cmake pytest

py.test 是用于测试 Python 脚本的已知工具。但是,我缺少用于检测 py.test 的 CMake 宏。

CMake 宏池中是否有此类内容?

max*_*zig 3

直接py.test从 a调用CMakeLists.txt不太可移植,因为不同的系统对它的命名完全不同,例如:

py.test    # pip, as of early 2018
pytest     # ditto
py.test-3  # Fedora 26 package
pytest-3   # ditto
Run Code Online (Sandbox Code Playgroud)

当然,系统可能默认为版本 2 或 3,并且可能同时安装版本 2 和 3。

因此,通过 cmake 可靠执行正确的 pytest 版本的一个简单方法是以不同的方式调用 pytest

python3 -m pytest
Run Code Online (Sandbox Code Playgroud)

(而不是py.testpytest或...)

如果你想在 cmake 中测试 pytest 包是否可用,你可以使用 进行测试execute_process(),例如:

execute_process(COMMAND python3 -m pytest --version
  OUTPUT_VARIABLE PYTEST_output
  ERROR_VARIABLE  PYTEST_error
  RESULT_VARIABLE PYTEST_result)
if(${PYTEST_result} UNEQUAL 0)
  message(SEND_ERROR "Pytest package not available: ${PYTEST_error}")
endif()
Run Code Online (Sandbox Code Playgroud)