Hi all I have a question regarding mocking in unit testing.
Let's assume I have the following class: ------------------------------------------- import subprocess class Pinger(object): def ping_host(self, host_to_ping): cmd_string = 'ping %s' % (host_to_ping) cmd_args = cmd_string.split() proc = subprocess.Popen(cmd_args, shell=True) proc.wait() if proc.returncode != 1: raise Exception('Error code was: %d' % (proc.returncode)) ------------------------------------------- In my unittest I don't want to run the ping command, (It might not be available on the build system) I merely want to check that a call to subprocess.Popen is made and that the parameters are what I expect? So far I have this, but it doesn't work and I suspect it's way off!! ------------------------------------------- import mock import unittest from tutor_q import Pinger class Test_Pinger(unittest.TestCase): def test_ping_host(self): pinger = Pinger() assert pinger subprocess = mock.Mock() subprocess.Popen.return_value = 0 subprocess.assert_called_once_with(['ping','localhost']) pinger.ping_host('127.0.0.1') if __name__ == '__main__': unittest.main() ------------------------------------------- Can anyone point me in the right direction on how to mock up these subprocess calls? Thanks James
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor