簡體   English   中英

在Python unittest中計數對方法內部的方法的調用

[英]Counting calls to method inside method in Python unittest

我試圖檢查使用Python unittest在acc.add方法中調用acc.add方法的Car.run ,但是我不知道該怎么做。 這是我嘗試的:

汽車及配件:

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

您需要模擬一個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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM