相关疑难解决方法(0)

使用 pytest 的 Python 项目的正确文件夹结构是什么?

我尝试使用文件夹结构来组织我的 Python 项目。当我需要进行测试时,我使用类似以下的东西。

.
|-- src
|   |-- b.py
|   `-- main.py
`-- tests
    `-- test_main.py
Run Code Online (Sandbox Code Playgroud)

这种方法有一个大问题。main.py如果正在导入,Pytest 将不会运行b.py

到目前为止,我已经尝试将空__init__.py文件单独或一起放置在src和文件夹中,但其中任何一个似乎都有效。tests

在我看来,这是一个非常标准的项目,但我无法在网上找到解决方案。我应该使用不同的文件夹结构吗?有没有推荐的方法在此类项目中使用 pytest?


这是文件的内容:

# b.py
def triplicate(x):
        return x * 3
Run Code Online (Sandbox Code Playgroud)
# main.py
from b import triplicate

def duplicate(x):
        return x * 2
Run Code Online (Sandbox Code Playgroud)
# test_main.py
from src.main import duplicate


def test_duplicate():
        assert duplicate(2) == 4
Run Code Online (Sandbox Code Playgroud)

这是我运行 pytest 时遇到的错误:

==================================================================================================== ERRORS ====================================================================================================
_____________________________________________________________________________________ ERROR collecting tests/test_main.py ______________________________________________________________________________________
ImportError while importing test module 'C:\Users\edwar\test_pytest\tests\test_main.py'. …
Run Code Online (Sandbox Code Playgroud)

python directory-structure working-directory pytest python-3.x

17
推荐指数
1
解决办法
2万
查看次数

在python中设计程序入口点

旨在运行所有内容的主文件现在是十几个变量(默认情况下在顶层控制流中是全局变量),几个结构和一个中型主循环.从其他语言我了解到全局变量是邪恶的.我倾向于将它全部放入同一个文件中的一个类中,并从全局控制流中调用一个方法,如下所示:

def MyClass:
  def __init__(self):
    self.value1 = 1
    ....

 if __name__ == "__main__":
   #inspect sys.argv here
   MyClass().main_proc()
Run Code Online (Sandbox Code Playgroud)

你认为这是一个设计加吗?有没有pythonic方式来做到这一点?

python

5
推荐指数
1
解决办法
2610
查看次数