9

我对 Python 比较陌生。根据unittest.setUp文档:

setUp()
调用方法来准备测试夹具。这是在调用测试方法之前立即调用的;此方法引发的任何异常都将被视为错误而不是测试失败。默认实现什么也不做。

我的问题setUp如下:

在我们的测试代码库中,我看到我们通过继承自unittest.TestCase. 最初,unittest.TestCase有名字setUptearDown。在自定义类中,我们有setUpTestCasetearDownTestCase。所以每次都会调用这两个函数而不是那些原始的对应函数。

我的问题是:

  1. 底层测试运行器如何调用这些setUp和函数?tearDown
  2. 是否要求那些用于设置测试用例的函数应该以 开头,setUp而用于拆除测试用例的函数应该以 开头tearDown?或者它可以被命名为任何有效的标识符?

谢谢你。

4

1 回答 1

12
  1. 当 setUp() 和 tearDown() 方法在继承自 unittest.TestCase 的类中可用时,它们会自动使用。
  2. 它们应该命名为 setUp() 和 tearDown(),只有在执行测试方法时才使用它们。

例子:

class MyTestCase(unittest.TestCase):
  def setUp(self):
     self.setUpMyStuff()

  def tearDown(self):
     self.tearDownMyStuff()

class TestSpam(MyTestCase):
  def setUpMyStuff(self):
    # called before execution of every method named test_...
    self.cnx = # ... connect to database

  def tearDownMyStuff(self):
    # called after execution of every method named test_...
    self.cnx.close()

  def test_get_data(self):
    cur = self.cnx.cursor()
    ...
于 2013-07-15T15:14:17.633 回答