MST

星途 面试题库

面试题:Python中__name__在单元测试中的基础应用

在Python中,当编写一个模块并进行单元测试时,__name__变量起到什么作用?请举例说明如何利用__name__来控制模块代码在作为主程序运行和被导入时的不同行为,以用于单元测试场景。
48.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

在Python中,__name__变量用于判断当前模块是作为主程序运行还是被其他模块导入。

当模块作为主程序运行时,__name__的值为__main__;当模块被导入时,__name__的值为模块的名称。

以下是利用__name__来控制模块代码在不同场景下行为的示例:

假设我们有一个模块example_module.py

def add_numbers(a, b):
    return a + b


# 单元测试代码
def test_add_numbers():
    result = add_numbers(2, 3)
    assert result == 5


if __name__ == "__main__":
    # 当模块作为主程序运行时执行以下代码
    test_add_numbers()
    print("All tests passed!")

在这个例子中:

  • example_module.py作为主程序运行时,if __name__ == "__main__":条件成立,会执行test_add_numbers()函数进行单元测试,并打印"All tests passed!"。
  • example_module.py被其他模块导入时,if __name__ == "__main__":条件不成立,单元测试代码不会执行,这样导入该模块的其他程序就不会受到单元测试代码的干扰。