Как исправить патч в методе stati c в Python - PullRequest
0 голосов
/ 27 февраля 2020

Это мой метод.

    @staticmethod
    def read_city_information(file_path):
        with open(file_path) as f:
            data_json = json.load(f)
            return data_json['result']

Покрытие есть. Но он все еще выбирает путь к исходному файлу. Патч не работает.

def test_read_city_information(self):
        read_data = json.dumps({"result": [
            {
                "name": "AAAAA",
                "geofenceUUID": "4873648736846jhefjehrfjher",
                "country": "AS",
                "longitude": 6.187189579,
                "radius": 18.69953236868005,
                "latitude": 50.72419548035,
                "timezone": "Berlin"
            }]})
        mock_open1 = mock_open(read_data=read_data)
        with patch('__builtin__.open', mock_open1):
            result = PredictHQCrawlerTask.read_city_information('file_path')
            self.assertEqual(result, [{u'name': u'AAAA', u'geofenceUUID': u'234567fvefvsdvcsdcvds',
                                       u'country': u'DE', u'longitude': 6.187189579, u'radius': 18.69953236868005,
                                       u'latitude': 50.72419548035, u'timezone': u'Europe/Berlin'}])

Что я тут не так делаю?

1 Ответ

1 голос
/ 27 февраля 2020

Я не могу воспроизвести это. Python 2,7, pip install mock:

so60434648.py

from mock import mock_open, patch
import foo
import json

def test_read_city_information():
    read_data = json.dumps({"result": "ok"})
    with patch('__builtin__.open', mock_open(read_data=read_data)):
        assert foo.Baz.read_city_information('foo') == "ok"


if __name__ == '__main__':
    test_read_city_information()

foo.py

import json

class Baz:
    @staticmethod
    def read_city_information(file_path):
        with open(file_path) as f:
            data_json = json.load(f)
            return data_json['result']
...