Как смоделировать метод на объекте в классе? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь выяснить, как издеваться над одним дополнительным уровнем косвенности - методом над объектом в классе.

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)
...