PyTest testing CLI
examples/pytest/test_anagram.py
import subprocess def capture(command): proc = subprocess.Popen(command, stdout = subprocess.PIPE, stderr = subprocess.PIPE, ) out,err = proc.communicate() return out, err, proc.returncode def test_anagram_no_param(): command = ["python3", "examples/pytest/anagram.py"] out, err, exitcode = capture(command) assert exitcode == 1 assert out == b'' assert err == b'Usage examples/pytest/anagram.py STR STR\n' def test_anagram(): command = ["python3", "examples/pytest/anagram.py", "abc", "cba"] out, err, exitcode = capture(command) assert exitcode == 0 assert out == b'True\n' assert err == b'' def test_no_anagram(): command = ["python3", "examples/pytest/anagram.py", "abc", "def"] out, err, exitcode = capture(command) assert exitcode == 0 assert out == b'False\n' assert err == b''