It removed the print and returns a list instead.
By definition a unit test can only test functions that return data. So there's no other option here.
A mutable object is functionally identical to a return value if you control the initial state and lifetime of the object. Like you can do in a unit test.
And as I demonstrated in my other comment I 100% retained the semantic structure of the function whilst making it 100% unit testable.