Python编程项目结构与单元测试

时间:2018-05-14 03:46:49

标签: unit-testing data-structures project code-organization

我已经编程了一段时间,但从未深入研究过它。现在我在一个研究中心工作,我需要让我的东西连贯和兼容。我的同事向我提出了一个"标准"组织我的项目的方法:

Project
  |_ LICENCE.txt
  |_ README.txt

  |_ code
     |_ main.py
     |_ __init__.py

  |_ tests
     |_ context.py
     |_ test_main.py

他们说这样做单元测试会更容易。

我访问了几十个完全相同的网站,所以我认为它不会那么糟糕:错了。我一直在努力整个周末来完成这项工作,我觉得自己变得越来越冷。

以下是我所拥有的: IDE image with project structure with context.py open in the window

根据我在过去几天所读到的内容,这是正确的方法,我的问题是,无论我怎么写,代码都不会识别bidon.py,也不会识别其中定义的功能。

bidon.py只是一个包含

的文件
def add(x, y):
    return x+y


def sub(x, y):
    return x-y

在上下文中不可能使用add函数,但是当测试文件和.py在同一个文件夹中时,它似乎有效......

但即使我添加了路径,为什么它不起作用?我试过(在context.py中):

import code

import code
import bidon

from code import bidion

from code import *

from code import bidon
from bidon import *

from code import bidon
from bidon import add

这些都没有奏效。

当我尝试在测试文件中使用context.py时,情况会变得更糟。 例如,在test_bidon.py中,我有

import unittest
from .context import code

class TestBidon(unittest.TestCase):
    def test_add(self):
        result = add(10, 5)
        self.assertEqual(result, 15)


if __name__ == "__main___":
    unittest.main()

这会产生一个错误,告诉我test_bidon.py不是一个包吗? 再次,我尝试了多个组合,没有一个工作。请帮我解决这个问题!我没有选择,我不想再花一天时间寻找任何东西。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来做我想做的事。我根据自己的意愿制作了基本项目架构的github。设置文件中仍有工作要做,但现在可以使用。

url:https://github.com/PyMarc2/BasicProjectArchitecture

基本上,我不知道为什么,但是当安装文件位于测试文件夹中时,它不能正常工作。而是将安装文件放在项目文件夹中。

(os.path.abspath(os.path.join(os.path.dirname(__file__), testFolderNameSetup)))

这个命令救了我。

谢谢!