Я использую unittest.mock.sentinel
для предоставления немых значений моим тестовым функциям, а затем для подтверждения вызовов.
Я бы хотел иметь возможность указать тип стража, чтобы он проходил проверку типов в методах.
MWE:
import collections
from unittest.mock import sentinel
def fun(x):
if not isinstance(x, collections.Iterable):
raise TypeError('x should be iterable')
pass
def test_fun_pass_if_x_is_instance_iterable():
# this does not work and raise because sentinel is not iterable
assert fun(sentinel.x) is None
EDIT
Я пытался сделать sentinel.x = collections.Iterable()
, но получил ошибку:
TypeError: Can't instantiate abstract class Iterable with abstract methods __iter__
Пока я могу, например, sentinel.x = tuple()
или sentinel.x = list()
, но это особый случай итерируемого