python 单元测试未找到另一个文件夹模块

python unit test not finding another folder module

我有以下文件夹结构:

sdn_unit_tests/ 这包含两个文件夹,'classes' 和 'tests'。

'classes'包含一个文件'validator.py'和一个pycache文件夹。 'tests' 包含一个文件 'test_validator.py'

validator.py的代码:

class Validator:

    def username_is_valid(self, username):

        if len(username) > 10:
            return False

        if ' ' in username:
            return False

        if username.islower():
            return False

        return True

test_validator.py的代码:

import unittest

from classes.validator import Validator

class TestValidator(unittest.TestCase):
    def  test_it_will_reject_username_if_too_long(self):#has to start with 'test_'
        #Assume
        username = 'InvalidTooLong'
        validator = Validator()

        #Action
        result = validator.username_is_valid(username)

        #Assert
        self.assertFalse(result)

预期行为: 我希望 运行 test_validator.py 至少会找到模块,这是我的第一个单元测试所以我不知道它会说 OK 还是 false 但我仍然希望它找到 classes.validator

错误:

Traceback (most recent call last):
  File "/Users/.../Desktop/sdn_unit_tests/tests/test_validator.py", line 3, in <module>
    from classes.validator import Validator
ModuleNotFoundError: No module named 'classes'

我会从父目录推荐 运行ning python -m unittest。这将自动启动 test discovery。但要使其生效,您必须在 tests 文件夹中创建一个空的 __init__.py 文件。

更新:作为 运行 test_validator.py 本身的快速方法(例如从 IDE),将此添加到开头:

import sys
sys.path.append('..')

到此结束:

if __name__ == '__main__':
    unittest.main()