如何解决如何在多目录Python工具中设置导入,以便可以通过Pycharm /终端运行单元测试,同时对Python初学者友好
上下文
我正在创建一个工具,与我一起工作的人可以通过从基类继承来添加内容。他们将需要使用实用程序,使用Pycharm或终端运行单元测试,并能够任意创建子目录以使事情井井有条。
我正在努力弄清楚如何在运行单元测试Pycharm和终端时获取Pycharm和终端以允许相同的导入。我已经阅读了很多有关Python导入的内容,但我仍然发现导入是Python中最难理解的东西。我想避免在整个地方添加sys.path.appends,因为我希望Pycharm能够提供实用程序用法的提示。我认为相对导入会满足我的需求,但我认为它们不方便用户使用,并且由于潜在的任意目录结构更改,相对导入可能会反复中断。
实际问题
- 是否有更好的方法来解决我遇到的问题?
- 使用我定义的约束条件甚至可能吗?
我想避免使该用户友好,因为某些Python初学者会使用它
- 相对进口
- 需要在子类中的任何地方使用sys.path.append
需要能够:
- 从此代码之外的某个地方调用main.py
- 从此代码之外的某个地方调用call_unit_tests.py
- 能够使用Pycharm对子类/实用程序运行单元测试
- 能够从终端运行子类的单元测试
目录结构
my_project
|-- main.py
|-- call_unit_tests.py
|-- base_class.py
|-- utilities
- utility_class.py
|-- subclasses
- sub_class.py
|-- more_subclasses
- another_sub_class.py
main.py
if __name__ == '__main__':
subclasses = create_instances_of_all_subclasses()
for c in subclasses:
c.do_things()
call_unit_tests.py
if __name__ == '__main__':
run_all_the_subclass_unittests()
run_all_the_utilities_unittests()
sub_class.py
import unittest
from utilities.utility_class import Utility
from base_class import BaseClass # not sure how
class SubClass(BaseClass)
def __init__(self):
Utility().do_something_useful()
class UnitTests(unittest.TestCase):
def setUp(self):
test_this_class = SubClass()
if __name__ == '__main__':
unittest.main()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。