我是否需要使用unittest创建要测试的类实例?

时间:2015-02-26 08:14:42

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

说我有:

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))

2 个答案:

答案 0 :(得分:3)

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

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

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

# calculator.py

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

答案 1 :(得分:2)

是的,你这样做。无论是为每个测试用例重新实例化类,还是在setUp中只重复一次,取决于您是否需要为每个测试提供一个新的类实例(例如,因为您的类具有很多内部状态)。