【问题标题】:Python calling a method from a different file defined in a classPython 从类中定义的不同文件调用方法
【发布时间】:2018-03-06 00:31:34
【问题描述】:

我正在尝试编写单元测试。我的单元测试文件是 test_file 。我的主要代码在一个文件(main_file.py)中,它定义了一个类和几个方法。 我所有的文件都在同一个目录中,所以我的树结构看起来像:

├── main_file.py
├── __init__.py
├── test_file.py

在我的 main_file 中,我有一个类名 my_class 并有方法 send_request。

在我的测试文件中,我尝试导入要使用的方法: from main_file import send_request

当我运行我的单元测试 (python test_file.py) 甚至使用鼻子测试时,它会不断抛出错误: ImportError: 没有名为 main_file 的模块

我的 init.py 只是空的。

【问题讨论】:

    标签: python python-2.7 unit-testing nose


    【解决方案1】:

    当您导入文件时,您需要导入 CLASS 而不仅仅是方法(如果它位于类内部)。所以你需要这样做:

    from main_file import my_class
    

    而不是在类中导入函数。然后当你打电话给班级时,你可以做一些事情,比如

    my_class.send_request()
    

    当您在新的 .py 中调用该函数时

    如您所知,您可以通过以下方式从 main_file 导入所有类和模块:

    import main_file
    from main_file import *
    

    这也将为您提供所有类/功能,尽管这可能不是您想要的。

    除此之外,我会确保它们都再次位于同一目录中,如果仍然失败,我通常会将所有内容保存到我的“下载”文件夹中。当所有其他方法都失败时,它就会起作用。

    【讨论】:

    • 我试图这样做,但现在我收到错误 ImportError: No module named main_file.
    【解决方案2】:

    你必须导入类才能使用该方法

    from main_file import my_class
    from my_class import FUNCTION_NAME or from my_class import *
    

    【讨论】:

    • 同样的问题我什至做不到from main_file import my_class 我得到 ImportError: No module named main_file
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多