首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试和测试Python包工作流

调试和测试Python包工作流
EN

Stack Overflow用户
提问于 2021-03-01 18:33:26
回答 2查看 41关注 0票数 0

在python包中,通常接受的调试和测试工作流程是什么?

目前,我有一个测试文件夹,它与项目src文件夹位于同一级别。我希望测试文件(单元测试和其他文件)调用项目中同级文件夹中最新开发的Python代码。然而,为此,我需要做一些事情,比如将文件夹添加到路径和相对导入,以使其正常工作。但对于其他项目开发人员来说,这似乎是一种破坏。

另一种方法是使用pip install在本地安装代码。但每次我想测试时,这都是一件麻烦的事情。

有人可以推荐一个工作流程,是安全和有效的测试项目。如果首选第一种方法,我应该如何处理导入和路径,以使测试代码以一种可靠的方式调用本地项目代码,从而使每个人都能工作?

EN

回答 2

Stack Overflow用户

发布于 2021-03-01 18:42:02

然而,

为此,我需要做一些事情,比如将文件夹添加到路径和相对导入以使其正常工作。但对于其他项目开发人员来说,这似乎是一种破坏。

执行以下操作不会中断项目AFAIK。

对我来说,以下布局可以工作(另请参阅here):

代码语言:javascript
复制
project
  |--src    # directory for all of your code
  |--test   # directory for tests
  ...

然后,我在每个测试.py文件中都有以下代码行(在从src导入之前):

代码语言:javascript
复制
import sys
sys.path.append("./src")

最后,我从项目目录执行测试。

编辑

在使用pytest时,您实际上可以将路径追加语句移动到conftest.py文件中。这样您就不必将其添加到每个测试.py文件中。

票数 1
EN

Stack Overflow用户

发布于 2021-03-01 21:40:21

一种可能的技巧是通过向其中添加一个__init__.py文件来使测试文件夹成为一个包:

代码语言:javascript
复制
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):

代码语言:javascript
复制
python -m unittest test.test_a

如果您遵循该模式,那么好消息是您可以运行完整的测试列表

代码语言:javascript
复制
python -m unittest discover

因为discover的魔力可以找到test包和它下面的所有test*.py文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66420454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档