Python:单元测试与生产代码位于不同的文件夹中?

问题描述 投票:0回答:2

我在 StackOverflow 上阅读了多篇文章和问题,并且想知道为什么没有人在 Python 中使用以下结构进行单元测试:

MyProject/
    main/
        module1/
            my_file.py
    test/
        module1/
            test_my_file.py

我读到的是你:

  1. test_my_file.py
    放在与
    my_file.py
    相同的目录中:

    MyProject/
        module1/
            my_file.py
            test_my_file.py
    
  2. test_my_file.py
    放入与
    test
    同一目录中名为
    my_file.py
    的目录中:

    MyProject/
        module1/
            my_file.py
            test/
                test_my_file.py
    

备注:

  1. 我来自 Java 世界:将单元测试代码与生产代码放在同一位置对我来说感觉很奇怪。
  2. 我对 Python 很陌生:我在这里可能缺少一些明显的原因。 (我的第一个猜测是它与模块有关)
python unit-testing
2个回答
1
投票

也许是因为我在使用 Python 之前也编写了很多 Java 代码,但在大多数 Python 项目中,我也将测试与生产代码放在单独的文件夹中。唯一的麻烦是,有时您必须使用

PYTHONPATH
或相对导入来帮助测试找到用于导入的生产代码。

这个项目中,我在我的 tox 配置中设置了

PYTHONPATH

setenv = PYTHONPATH=plugin/PySrc
commands =
     py.test plugin/PySrc/ test/PySrc/ --cov-report term-missing --cov plugin/PySrc/
     coverage xml

0
投票

对于它的价值来说,

我也来自Java社区,我正在开始使用Python。我也有同样的问题。

我询问了三个不同的来源:

测试放入 test_*.py 或 *_test.py 形式的文件中,通常放置在包根目录中名为tests/的目录中。

  • Github CoPilot(由 ChatGPT 4 提供支持):

在Python中,通常的做法是将测试分离到一个专用文件夹中,通常命名为tests或test,而不是将它们放在与生产代码相同的文件夹中。这有助于保持项目井井有条,并使管理和运行测试变得更加容易。

  • 米斯特拉尔:

在 Python 中,测试的组织可能会根据项目和开发团队的偏好而有所不同。然而,通常的做法是将测试分离到专用文件夹中,类似于 Java 中的做法。这种方法有助于保持生产代码和测试代码的组织性,并使其更易于管理和维护。

结论:如果这符合您的团队规则或者您正在开发新项目,您可以继续将测试放在单独的文件夹中!

© www.soinside.com 2019 - 2024. All rights reserved.