Я пытаюсь выяснить, как издеваться над одним дополнительным уровнем косвенности - методом над объектом в классе.
import serial
class MyClass(object):
def __init__(self, com_port, baudrate):
self.sp = serial.Serial(com_port, baudrate)
def do_something(self, data):
num_bytes_written = self.sp.write(data)
if num_bytes_written != len(data):
return -1
return 0
В тестовом файле:
import mock
...
@mock.patch('serial.Serial', return_value='')
@mock.patch('serial.Serial.write', return_value=0)
def test_do_something_fails_on_bad_write(self, mock_write):
...
want = -1
dummy_data = b'123'
inst = myfile.MyClass('COM8', 115200)
got = c.do_something(dummy_data)
self.assertEqual(got, want)