我有一个基于CGED的项目,它既使用C++又使用Python源代码。测试通过在{ /p>文件夹结构中的所有C++测试通过^ {CD1>}添加。
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
的更改。在
有两种选择:
使用`PYTHONPATH
add_test (NAME python-tests COMMAND ${PYTHON_EXECUTABLE} -m pytest # Or just COMMAND pytest WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) set_tests_properties(python-tests PROPERTIES ENVIRONMENT "PYTHONPATH=${PROJECT_SOURCE_DIR}/src/mypyspace:$ENV{PYTHONPATH}")
在src目录内调用 ^{/cd2}>
第一种方法的缺点是,用户可能会配置并在以后更改其环境,从而使PYTHONPATH不同(例如,在HPC集群中加载模块),并发现测试不正确地成功。在
第二种是最灵活的。它依赖于来自https://docs.pytest.org/en/latest/pythonpath.html的信息。最重要的部分:
所以我们只需要在运行测试到源目录时设置当前目录。在
注意:对于其他特定于
unittest
(模块)的替代品,您也可以在Running unittest with typical test directory structure中找到一些东西相关问题 更多 >
编程相关推荐