【问题标题】:Counting calls to method inside method in Python unittest在 Python unittest 中计算对方法内部方法的调用
【发布时间】:2019-09-03 09:22:57
【问题描述】:

我正在尝试使用 Python 单元测试检查在 Car.run 方法中调用 acc.add 方法的次数,但我不知道该怎么做。这是我尝试过的:

汽车和配件:

class Accessories(AccessoriesAbstract):
    def __init__(self):
        self.sum = 0
        super().__init__()

    def add(self, index, name):
        self.sum += index
        return self.sum


class Car(CarAbstract):
    def __init__(self, acc: Accessories):
        self.acc = acc
        super().__init__(acc)

    def run(self):
        self.acc.add(2, "bob")
        result = self.acc.add(5, "rob")

        if result > int(sys.maxsize) - 10:
            raise ValueError

并测试:

    @patch('car_code.Car')
    def test_car_run(self, MockCar):
        car = MockCar()
        response = car.run()

        self.assertIsNotNone(response)
        car.run.acc.add.assert_called()

【问题讨论】:

    标签: python unit-testing mocking python-unittest


    【解决方案1】:

    您需要模拟Accessories 类的实例,然后将该实例传递给Car 构造函数。例如:

    # Create an Accessories object   
    acc = Accessories()
    # Create a mock object that "wraps" the Accessories object
    mock_acc = Mock(wraps=acc)
    # Pass the mock object when you create the Car object
    car = Car(mock_acc) 
    car.run()
    # Then you'll be able to get the call_count like this:
    mock_acc.add.call_count
    

    【讨论】:

      猜你喜欢
      • 2021-01-19
      • 1970-01-01
      • 2021-10-14
      • 2022-11-21
      • 1970-01-01
      • 2021-03-29
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多