【问题标题】:Do I need to create an instance of class to be tested with unittest?我是否需要创建一个要使用 unittest 测试的类的实例?
【发布时间】:2015-02-26 08:14:41
【问题描述】:

说我有:

class Calculator():
    def divide (self, divident, divisor):
        return divident/divisor`

我想使用 Python 3.4 unittest 模块测试它的除法。

我的代码是否必须具有类的实例化才能对其进行测试?即,是以下测试类中需要的setUp方法:

class TestCalculator(unittest.TestCase):
    def setUp(self):
        self.calc = src.calculator.Calculator()
    def test_divide_by_zero(self):
        self.assertRaises(ZeroDivisionError, self.calc(0, 1))

【问题讨论】:

  • 是的,如果你想测试一个类的实例,你通常需要创建一个实例来测试。

标签: python class unit-testing python-3.x


【解决方案1】:

因为它有一个self 参数,所以它是一个实例方法,所以你需要一个实例。

如果它没有self,您可以将其设为@classmethod@staticmethod,请参阅what's the difference

由于您不使用self 参数,它可能不应该是实例方法。但是你可以只使用一个函数而根本没有类:

# calculator.py

def divide(dividend, divisor):
    return dividend / divisor

【讨论】:

  • 也许我的例子过于简单了,但你的As it has a self parameter it is an instance method, so you need an instance. 回答了这个问题。
【解决方案2】:

是的,你知道。是为每个测试用例重新实例化该类,还是只在 setUp 中重新实例化一次,取决于您是否需要为每个测试重新实例化该类(例如,因为您的类带有很多内部状态)。

【讨论】:

  • 但是,该方法不使用任何内部状态,类也不携带任何状态。
  • @PeterWood 确实如此。只是想我会提一下,以防进一步改进将内存变量引入这个计算器
猜你喜欢
  • 2018-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多