假设我有以下Python UnitTest:
import unittest
def Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
# Get some resources
...
if error_occurred:
assert(False)
@classmethod
def tearDownClass(cls):
# release resources
...
如果setUpClass调用失败,则不会调用tearDownClass,因此永远不会释放资源。如果下一个测试需要资源,则在测试运行期间会出现此问题。
当setUpClass调用失败时,是否有方法进行清理?
您可以在setUpClass方法中放置一个try-catch,并在except中直接调用tearDown。
需要外部资源来运行unittest是一种不好的做法。如果这些资源不可用,并且您需要测试代码的一部分以防出现奇怪的错误,那么您将无法快速运行它。尝试区分集成测试和单元测试。
就像你在其他地方保护资源一样。
try-except
:清理可以像在
except
块中调用cls.tearDownClass()
一样简单。然后,您可以调用assert(False)
或您希望提前退出测试的任何方法。我有一大堆测试助手函数,它们接受一个测试实例,并使用addCleanup来清理设置/删除线程、临时文件等,所以我也需要addCleanup API来处理类级别的fixture。我重新实现了一些unittest doCleanup功能来帮助我,并在类设置期间使用mock来修补addCleanup()
相关问题 更多 >
编程相关推荐