def test_subpipe_input_set_as_expected(self): a = Mock(output=lambda: list('abc')) b = Mock(output=lambda: list('def')) c = Mock(output=lambda: list('beg')) def ugh(x): x.input = c.output c.link = Mock(side_effect=ugh) subpipe = BasePipe() subpipe.add(a, b) pipe = BasePipe() pipe.add(c, subpipe) # should not raise c.link.assert_called_once_with(subpipe) self.assertEqual(subpipe.input(), c.output())