Python 调用TestCase类会导致函数运行两次
当我注意到一个我不理解的奇怪行为时,我正试图动态地创建测试函数。为了便于理解,我将代码简化为此。我正在Python3.6.7上运行它 代码: 如您所见,test函数test_x运行了两次,最后一个print语句没有执行 因此,我的问题是:Python 调用TestCase类会导致函数运行两次,python,python-3.x,python-unittest,Python,Python 3.x,Python Unittest,当我注意到一个我不理解的奇怪行为时,我正试图动态地创建测试函数。为了便于理解,我将代码简化为此。我正在Python3.6.7上运行它 代码: 如您所见,test函数test_x运行了两次,最后一个print语句没有执行 因此,我的问题是: 为什么测试函数运行两次 为什么print语句print(“测试结束”)没有执行 一,。为什么测试函数运行两次 因为unittest代码在模块的命名空间中找到两个对象,它们是unittest.TestCase类、MyTestCase和x。它不会检查它们是否是同一
unittest
代码在模块的命名空间中找到两个对象,它们是unittest.TestCase
类、MyTestCase
和x
。它不会检查它们是否是同一个对象。(好吧,它知道这一点,因为它不会将x
视为要测试的新类,所以它不会再次调用setUpClass
;请参阅。)
二,。为什么print语句print(“测试结束”)没有执行
默认情况下,运行测试后,unittest.main()
调用sys.exit()
。您可以通过添加参数exit=False
来禁用此功能:
if __name__ == "__main__":
print('test start')
unittest.main(exit=False)
print('test end')
test start
SET UP
hi
.hi
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
if __name__ == "__main__":
print('test start')
unittest.main(exit=False)
print('test end')