如果它们在姐妹文件夹中,如何使我的Python单元测试导入测试模块?

How to make my Python unit tests to import the tested modules if they are in sister folders?

我仍在考虑import声明。如果我在同一级别有两个文件夹:

  • SRC
  • 测试
  • 如何使test中的py文件导入src中的模块?是否有更好的解决方案(比如将文件夹放在另一个文件夹中?)


    您需要的代码用于使用src/module_name.py

    1
    from src import module_name

    根目录位于pythonpath上,例如从根目录运行

    您的目录结构是我使用的,但是使用的是模型名而不是SRC。我从J.Calderone的博客上得到了这个结构,类似于谷歌的博客。


    试试看:

    1
    2
    3
    4
    import sys
    import os
    sys.path.append(os.path.join('..', 'src'))
    import module_in_src_folder

    编辑以支持任何平台


    对于我编写的所有Python项目,我都有与OP完全相同的情况:

    • 项目文件夹
    • SRC
    • 测试

    所有模块,无论是在SRC或TEST中,还是在这些模块的子文件夹中,总是使用import的形式,标记在其答案中显示:

    1
    from src import module_name

    我所做的是编写一个位于Project Folder中的模块,递归地发现测试文件夹中的所有测试模块,并让unittest运行所有这些测试。因为python运行在Project Folder中,所以模块是相对于工作目录的。

    这意味着测试就像任何其他想要从src模块化的客户机一样。