Ino*_*ryy 0 python python-3.x python-unittest
我有一个python模块文件(func.py)和一个单元测试文件(f_test.py):
# func.py
def f(x):
return x + 1
x = input("Enter x: "))
print("f(x): " + str(f(x)))
Run Code Online (Sandbox Code Playgroud)
和
# f_test.py
import unittest
from func import f
class MyTest(unittest.TestCase):
def test(self):
self.assertEqual(f(1), 2)
Run Code Online (Sandbox Code Playgroud)
当我运行时,f_test.py我希望测试套件能够被执行(成功).相反,我看到以下输入:
Finding files... done.
Importing test modules ... Enter x:
Run Code Online (Sandbox Code Playgroud)
如果我func.py从那时注释掉输入/输出行,我会得到预期的行为.如何在不修改的情况下实现它func.py?
导入时func,将运行内部的所有代码.运行定义def f(x)...是创建函数的原因f.
您可以使用区分导入和运行文件if __name__=='__main__'.
例如:
# func.py
def f(x):
return x + 1
if __name__ == '__main__':
x = input("Enter x: "))
print("f(x): " + str(f(x)))
Run Code Online (Sandbox Code Playgroud)
当你跑步时func.py,__name__=='__main__'将是真的.导入时,它将为false(__name__将'func'改为).