[英]Where to place python unittests
我有一个目录结构如下:
DirA
__init__.py
MyClass.py
unittests <------------------directory
MyClassTest.py
MyClassTest.py是可执行的:
import unittest
from . import MyClass
class MyClassTestCase(unittest.TestCase):
""" Testcase """
...
.....
if __name__ == '__main__':
unittest.main()
我收到错误“父模块''未加载,无法执行相对导入”的行:
from . import MyClass
我想将unittests放在被测模块旁边的'unittests'目录中。 有没有办法做到这一点,并有权访问我正在测试的父目录中的所有模块?
使用您想要的任何布局,具体取决于您自己的首选项以及您希望导入模块的方式:
要查找unittests
文件夹,由于名称不是常规名称(默认情况下单元测试脚本查找test
文件夹),您可以使用unittest
模块的discover
选项来告诉如何查找测试脚本:
python -m unittest discover unittests
需要注意的是,第一unittest
是Python模块,第二unittests
(用s
)是你的目录,你已经把你的测试脚本。
另一种方法是使用nosetest
模块(或其他新的单元测试模块,如pytest
或tox
),它们应该自动找到你的测试脚本,无论你放在哪里:
nosetests -vv
要修复导入错误,您应该使用完整的相对(或绝对)路径:
from ..MyClass import MyClass # Relative path from the unittests folder
from MyClass import MyClass # Absolute path from the root folder, which will only work for some unit test modules or if you configure your unit test module to run the tests from the root
建议的结构,就是看看你的结构:
my_app
my_pkg
__init__.py
module_foo.py
test
__init__.py
test_module_foo.py
main.py
从my_app
运行所有内容,这样您将在测试代码和核心代码之间使用所有相同的模块引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.