pycharm 单元测试:未正确加载带有指针的文件名

okxuctiv  于 2022-11-29  发布在  PyCharm
关注(0)|答案(1)|浏览(165)

设置:PyCharm,Python 3.10
我们有一个命名约定,将python单元测试文件命名为URL。例如:my.domain.org.py
In the past, this was no issue. Now after an IDE and Python Update it does not run anymore. Selecting right click -> Run "Python tests in my.domain.org.py" throws the error:

Traceback (most recent call last):
  File "D:\programs\Python\3.10.2\lib\unittest\loader.py", line 154, in loadTestsFromName
    module = __import__(module_name)
ModuleNotFoundError: No module named 'my'

看起来,加载程序将文件名中的"."解释为路径。
如何在不重命名文件的情况下运行单元测试(这可以解决问题)?

njthzxwz

njthzxwz1#

你不能直接导入带有无效名称的python文件(在你的例子中,文件名中有点),但是你可以使用imp库,如下所示(在这个例子中,我有一个名为print_smth的函数,它在my.file.py中输出“it works!”):

import imp

with open('my.file.py', 'rb') as fp:
    my_file = imp.load_module(
        'my_file', fp, 'my.file.py',
        ('.py', 'rb', imp.PY_SOURCE)
    )

if __name__ == "__main__":
    my_file.print_smth()

输出:

test.py:1: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
  import imp
it works!

P.S:最好不要这样做!它是高度反对的!

相关问题