Coincidentally, I just wrote a unit test capturing stdout of a command, but I found that call_command didn't return stdout's content. I had found a reference to needing to pass call_command(.., stdout=mystdout = StringIO()) to get stdout; so, I'm curious why yours works if it does.