У меня есть список фильтров, и каждый фильтр меняет список ввода. Как создать макет для каждого фильтра, который изменит список ввода?
class TwoFilter(object):
def filter(self, arr):
arr[:] = [i for i in arr if i % 2 != 0]
class ThreeFilter(object):
def filter(self, arr):
arr[:] = [i for i in arr if i % 3 != 0]
class FourFilter(object):
def filter(self, arr):
arr[:] = [i for i in arr if i % 3 != 0]
class MyFilters(object):
def __init__(self):
self.filters = [TwoFilter(), ThreeFilter(), FourFilter()]
def apply_filters(self, arr):
for f in self.filters:
f.filter(arr)
Я хочу провести модульное тестирование apply_filters
, насмехаясь над фильтрами в self.filters
для входа [1,2,3,4]. Есть ли способ заставить каждый макет изменить вход arr
и проверить, был ли вызван каждый последующий фильтр с этим измененным arr
?
P.S .: Я могу обойти эту проблему, когда фильтры возвращают arr
и используют mock.return_value
, чтобы изменить вывод макета.