0

我有以下文件夹结构:

sdn_unit_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'
4

1 回答 1

1

我建议python -m unittest从父目录运行。这将启动自动测试发现。但要使其正常工作,您必须__init__.pytests文件夹中创建一个空文件。

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

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

到最后:

if __name__ == '__main__':
    unittest.main()
于 2020-06-10T10:01:01.400 回答