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()
我有以下文件夹结构:
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()