在python包中,通常接受的调试和测试工作流程是什么?
目前,我有一个测试文件夹,它与项目src文件夹位于同一级别。我希望测试文件(单元测试和其他文件)调用项目中同级文件夹中最新开发的Python代码。然而,为此,我需要做一些事情,比如将文件夹添加到路径和相对导入,以使其正常工作。但对于其他项目开发人员来说,这似乎是一种破坏。
另一种方法是使用pip install在本地安装代码。但每次我想测试时,这都是一件麻烦的事情。
有人可以推荐一个工作流程,是安全和有效的测试项目。如果首选第一种方法,我应该如何处理导入和路径,以使测试代码以一种可靠的方式调用本地项目代码,从而使每个人都能工作?
发布于 2021-03-01 18:42:02
然而,
为此,我需要做一些事情,比如将文件夹添加到路径和相对导入以使其正常工作。但对于其他项目开发人员来说,这似乎是一种破坏。
执行以下操作不会中断项目AFAIK。
对我来说,以下布局可以工作(另请参阅here):
project
|--src # directory for all of your code
|--test # directory for tests
...然后,我在每个测试.py文件中都有以下代码行(在从src导入之前):
import sys
sys.path.append("./src")最后,我从项目目录执行测试。
编辑
在使用pytest时,您实际上可以将路径追加语句移动到conftest.py文件中。这样您就不必将其添加到每个测试.py文件中。
发布于 2021-03-01 21:40:21
一种可能的技巧是通过向其中添加一个__init__.py文件来使测试文件夹成为一个包:
import sys
import os.path
sys.path.append(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'src')然后假设src文件夹包含一个a.py文件,您可以将它从测试导入到test_a.py文件中,就像import a 提供的您从包含测试的文件夹中启动测试一样(假设为unittest):
python -m unittest test.test_a如果您遵循该模式,那么好消息是您可以运行完整的测试列表
python -m unittest discover因为discover的魔力可以找到test包和它下面的所有test*.py文件。
https://stackoverflow.com/questions/66420454
复制相似问题