说我有:
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))
答案 0 :(得分:3)
因为它有一个self
参数,所以它是一个实例方法,所以你需要一个实例。
如果它没有self
,您可以将其设为@classmethod
或@staticmethod
,请参阅what's the difference。
由于您不使用self
参数,因此它可能不是实例方法。但是你可以只使用一个函数而根本没有类:
# calculator.py
def divide(dividend, divisor):
return dividend / divisor
答案 1 :(得分:2)
是的,你这样做。无论是为每个测试用例重新实例化类,还是在setUp中只重复一次,取决于您是否需要为每个测试提供一个新的类实例(例如,因为您的类具有很多内部状态)。