Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как правильно хранить данные (request, response)

test-data
api
python
Теги: #<Tag:0x00007f7b62a00fe8> #<Tag:0x00007f7b62a00e08> #<Tag:0x00007f7b62a00c50>

(Viktor Kliui) #21

@rmerkushin, возникла одна проблемка, как мне подставить значение null (None) с помощью replace?

{'$phoneNumber': None}
TypeError: replace() argument must be str, not None

С помощью регулярок только?

json_file = re.sub(r'(\"\$)[\w]+\"', "null", json_file)

(rmerkushin) #22

в json не бывает None, вставляйте null


(Viktor Kliui) #23

Если мы добавляем None и делаем json.dumps - оно конвертит в null.

Вопрос в другом, я не могу передать None, ошибку вы видите выше. И я так же не можу передать null, могу только лишь “null”, но это же строка.


(Viktor Kliui) #24

Всем спасибо, сам спросил, потом решил. Вот как решил обыграть поставление null:

    # Получаем и преобразуем JSON файл, согласно переданным параметрам
    def make_data(json_name, data={}, default = False):
        #Определяем откуда брать json файл
        if default == False:
            json_file = open('JSON_files/%s.json'%json_name).read()
        else:
            json_file = open('JSON_files/default_data/%s.json' % json_name).read()
        #Если передали параметры для изменения, заменяем их
        if len(data) > 0:
            for key, val in iter(data.items()):
                try:
                    json_file = json_file.replace(key, val)
                # Возникает если передать None(null)
                except TypeError: continue
        # Вместо не переданных параметров подставляем null
        json_file = re.sub(r'(\"\$[\w]+\")', "null", json_file)
        return json_file

(rmerkushin) #25

Так вам и нужно предавать строку! Вы делаете замену в тексте, соответственно передав “null” оно в текст вставится без кавычек. А потом уже сериализуйте в json. Единственное, не забудьте в шаблоне убрать кавычки в том месте где замену делаете. А для случаев когда не null хотите вставить передавайте значение для замены вместе с кавычками, типа так: '"abc"'.