У меня есть следующий метод внутри файла с именем another_module
def convert(cluster_id, company_id, fieldfile, sfile, unitfile, outfile, tz=None):
with open_write(outfile) as of:
with open_read(unitfile) as uf, open_read(fieldfile) as ff, open_read(sfile) as sf:
units = load_units(uf)
fields = load_fields(ff)
csvreader = csv.DictReader(sf)
Итак, я хочу смоделировать units, fields
и csvreader
значения. Я делаю это следующим образом в тесте, помещенном отдельно:
@mock.patch('another_module.load_units')
@mock.patch('another_module.load_fields')
@mock.patch('another_module.csv')
def test(load_units_mock, load_fields_mock, csv_mock):
load_units_mock.return_value = 4
load_fields_mock.return_value = 5
csv_mock.DictReader.return_value = 6
convert(
8,
281,
os.path.join(TESTS_DIR, 'fourseasons.field.csv.xz'),
os.path.join(TESTS_DIR, 'fourseasons.survey.20180301-20180302.csv.xz'),
os.path.join(TESTS_DIR, 'fourseasons.unit.csv.xz'),
o.name,
pytz.timezone('America/Los_Angeles')
)
Затем я получаю значения units=4, fields=5, csvreader=<MagicMock name=\'csv.DictReader()\' id=\'4405996288\'>
С другой стороны, если я переписываю макет csvreader
следующим образом:
@mock.patch('another_module.load_units')
@mock.patch('another_module.load_fields')
def test(load_units_mock, load_fields_mock):
load_units_mock.return_value = 4
load_fields_mock.return_value = 5
with patch('another_module.csv') as csv_mock:
csv_mock.DictReader.return_value = 6
convert(
8,
281,
os.path.join(TESTS_DIR, 'fourseasons.field.csv.xz'),
os.path.join(TESTS_DIR, 'fourseasons.survey.20180301-20180302.csv.xz'),
os.path.join(TESTS_DIR, 'fourseasons.unit.csv.xz'),
o.name,
pytz.timezone('America/Los_Angeles')
Затем units=4, fields=[realvalue], csvreader=6
Знаете ли вы, как правильно установить 3 значения, как я хочу? Что я делаю не так?