【发布时间】:2019-02-28 20:32:55
【问题描述】:
我有一个基于 CMake 的项目,该项目同时使用 C++ 和 python 源。通过add_test 为文件夹结构中的所有 C++ 测试添加测试,例如:
src
mynamespace/foo.cpp
mypyspace/mypkg/__init__.py
mypyspace/mypkg/bar.py
test
mynamespace/testFoo.cpp
mypyspace/testBar.py
在testBar.py 我有一个import mypkg 并想用add_test(... COMMAND pytest WORKING_DIRECTORY .../test) 运行它
当然它没有找到我的包,但我也不想安装它(它需要在构建过程中生成一些东西,并且作为其他来源的一部分积极开发)。
执行这些测试的正确/首选方式是什么?
注意事项:
- 我不想将源移出
src或将测试移出test -
set_tests_properties可以设置环境变量。
我认为设置PYTHONPATH=.../src/mypyspace 应该可以工作,但这也会忽略对用户PYTHONPATH 的更改。
【问题讨论】:
-
嗯,你问如何从 CMake 运行这些测试,但是如何
test/mypyspace/testBar.py脚本旨在从命令行运行?应该如何设置环境变量才能正常运行? -
不知道。我假设存在我可以设置的东西(比如
PYTHONPATH),这在 CMake 中可能并不容易。 -
你不知道测试应该如何运行,但问我们如何在 CMake 中做到这一点,真的吗?
-
是的。在文件夹中分离 src 和 test 的方法非常普遍(尤其是在 CMake 项目中),我认为有人已经这样做了。查看相关问题:stackoverflow.com/questions/47859986/…(但答案类似于:“pytest 需要安装 src”)
-
在
set_tests_properties中,您可以为PYTHONPATH变量赋值等于其当前值加上其他路径,例如:$ENV{PYTHONPATH}:${CMAKE_CURRENT_SOURCE_DIR}/../src。请注意,PYTHONPATH变量的当前值是在运行cmake时获取的,但用户不太可能在运行测试时更改该路径。
标签: python python-3.x cmake pytest