如何让我的Python单元测试导入同级文件夹中的模块?

17 投票
3 回答
12431 浏览
提问于 2025-04-15 19:16

我还在慢慢理解 import 这个语句。如果我有两个同级的文件夹:

  1. src
  2. test

那么怎么才能让 test 文件夹里的 py 文件去使用 src 文件夹里的模块呢?有没有更好的办法,比如把一个文件夹放到另一个里面?

3 个回答

0

我和提问者的情况完全一样,所有我写的Python项目都是这样:

  • 项目文件夹
    1. src
    2. test

无论是在src文件夹、test文件夹,还是这些文件夹的子文件夹里,所有模块都使用Mark在他的回答中展示的那种import方式:

from src import module_name

我做的事情是写了一个模块,放在项目文件夹里,它会递归地查找test文件夹中的所有测试模块,并让unittest运行这些测试。因为Python是在项目文件夹中运行的,所以模块是相对于当前工作目录的。

这意味着这些测试就像任何其他想要从src中导入模块的客户端一样。

6

试试这个:

import sys
import os
sys.path.append(os.path.join('..', 'src'))
import module_in_src_folder

已编辑以支持任何平台

10

你需要的代码是用来使用 src/module_name.py 这个文件的。

from src import module_name 

而且你的根目录需要在 PYTHONPATH 里,比如说你是从根目录运行的。

你的文件夹结构和我用的一样,只不过是用模型的名字代替了 src。我这个结构是从 J Calderone 的博客 上得到的。

撰写回答