The refactored test in our video looks like this:
import pytest @pytest.mark.parametrize("n,expected", [(0, 0), (5, 5), (10, 10), (26, 26), (1000, 26)]) def test_headtail_size(base_clumper, n, expected): assert len(base_clumper.head(n)) == expected assert len(base_clumper.tail(n)) == expected
It totally fails. You may be able to see why when you look
at the code that was in our
class Clumper: def __init__(self, blob): self.blob = blob def __len__(self): return len(self.blob) def keep(self, *funcs): data = self.blob for func in funcs: data = [d for d in data if func(d)] return Clumper(data) def head(self, n): return Clumper([self.blob[i] for i in range(n)]) def tail(self, n): return Clumper([self.blob[-i] for i in range(1, n + 1)])
If you're interested in seeing how we refactored this code you can check the code on the live github repository. You can also find a refactored set of tests there.