pytest 找不到动态创建的模块



我有一个目录结构,如下所示:

package_root/lib/package_name/foo.py

在 foo.py 中,我有一个函数,可以创建一个包含函数 (f( 的文件 (bar.py(。 foo.py 还有一个函数,然后导入 bar 并运行 bar.f((。

当我声明 foo.py"导入栏"中时,它可以工作,并且我可以访问 bar.f,并且运行良好。

但是,运行 pytest 时并非如此。我们从package_root运行 pytest,它在尝试导入模块栏时找不到模块栏。这是因为(我相信(在运行pytest时,它会在不包含init.py文件的/package_root中创建 bar.py。由于我们的测试会自动为 cicd 管道运行,因此我需要它能够在从 package_root 运行 pytest 时正确导入。有什么建议吗?

据我从您的问题中理解,您在管道中面临导入问题(如果我错了,请纠正我(。在pytest中,通常你的框架应该包含pytest.ini/tox.ini以及所有测试脚本。请参考链接(http://doc.pytest.org/en/latest/customize.html(。

在运行代码的框架设计中创建一个文件 pytest.ini/tox.ini(在您的情况下在 package_root/目录中(。

#pytest.ini
[pytest]
python_paths = . lib/<package-name>/

最新更新