Ошибка патча Python unittest.mock с выражениями F() может использоваться только для обновления, а не для вставкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка патча Python unittest.mock с выражениями F() может использоваться только для обновления, а не для вставки

Сообщение Anonymous »

Минимальный рабочий пример доступен по адресу https://github.com/rgaiacs/django-mwe-magicmock.
При использовании Django я использую Model.clean() code> для проверки формы, отправленной пользователем. Во время проверки некоторые поля могут обновляться на основе ответа на HTTP-запрос. Я хочу протестировать Model.clean() с помощью unittest Python и имитировать HTTP-запрос.
Мое приложение/models.py < /p>

Код: Выделить всё

import logging

from django.core.exceptions import ValidationError
from django.db import models

from .aid import GitHosting

logger = logging.getLogger(__name__)

class Resource(models.Model):
code_repository = models.URLField(
help_text="Link to the repository where the un-compiled, human readable code and related code is located."
)
version = models.CharField(
blank=True,
# Git hash contains 40 characters
max_length=50,
default="HEAD",
help_text="The version of the resource in the format of a Git commit ID or Git tag.",
)

def clean(self):
git_host = GitHosting()
self.version = git_host.get_version()
и мое приложение/tests.py

Код: Выделить всё

import logging
from unittest.mock import patch

from django.test import TestCase
from django.urls import reverse

from .models import Resource

logger = logging.getLogger(__name__)

@patch("app.models.GitHosting.get_version")
class ResourceViewTestCase(TestCase):
def test_add_resource(self, mock_get_version):
mock_get_version = "5678"

logger.error("Submitting form ...")

response = self.client.post(reverse("app:index"), {
"code_repository": "http://mygit.com/foo/bar"
})

resource = Resource.objects.get(id=1)

self.assertEqual(resource.version, "5678")
Когда я запускаю тест python Manage.py, тест завершается с ошибкой

Код: Выделить всё

ValueError: Failed to insert expression "" on app.Resource.version. F() expressions can only be used to update, not to insert.
Как исправить тест? Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/792 ... -to-update
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»