Django - изменение поля модели тестирования

Предположим, что в поле модели по умолчанию указывается None , а метод после того, как некоторое сложное действие, как ожидается, изменит поле на None .

В конце теста я делаю assertEqual , а поле None , как и ожидалось. Что делать, если метод завершился неудачно, а None не был результатом действия метода, а просто совпадением?

Есть ли способ определить изменение поля модели без необходимости устанавливать другое значение в начале теста?

В моем случае это будет поле ForeignKey для сложного объекта из другого пакета.

Каков наилучший способ сделать это?

1
добавлено
Просмотры: 2
nl ja de

1 ответы

All all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all all

Я не эксперт, и на самом деле это не может удовлетворить ваши конкретные потребности, но мне кажется, что вам нужна насмешливая библиотека. Mock является одним из фаворитов.

Что вы можете сделать, это использовать mock.patch в качестве декоратора или менеджера контекста, чтобы издеваться над атрибутом, который вы пытаетесь протестировать, например:

def test_attribute_is_being_set_to_none():
    mocked_attribute = mock.PropertyMock()
    with mock.patch('MyModule.MyClass.attribute_to_mock', mocked_attribute)
        MyObject = MyClass()
        MyObject.method()

    p.assert_called_with(None)

Это должно проверить, был ли атрибут когда-либо установлен None во время тестирования. Если вы хотите быть более жестким, вы можете использовать assert_called_once_with (None) , чтобы узнать, был ли объект установлен только один раз во время метода.

Вы можете столкнуться с некоторыми проблемами с издевательством над атрибутом, пространствами имен, с помощью декораторов или контекстных менеджеров ... это зависит от многих вещей, но я уверен, что насмехаться - это путь сюда.

0
добавлено
QA — вакансии и аналитика рынка вакансий
QA — вакансии и аналитика рынка вакансий
5 668 участник(ов)

Вакансии и поиск работы в сфере QA. Вопросы: @qa_ru Про деньги: @qa_fin При размещении вакансии указывать: - должность - компанию - требования к кандидату - условия и ЗП хэштеги: #город #типзанятости

QA — русскоговорящее сообщество
QA — русскоговорящее сообщество
3 625 участник(ов)

Общаемся про все виды тестирования и его автоматизацию. Без мата, грубостей и провокаций. События: @qaevents Вакансии: @qa_jobs Автоматизаторы: @qa_automation Слухи про компании: @qa_bad_company

QA juniors
QA juniors
2 720 участник(ов)

Добро пожаловать в чат джуниоров QA! Общаемся обо всём, что связано с тестированием и не только :) В чате царит дружественная атмосфера, поэтому общаемся без мата, грубостей. @qa_automation - автоматизация @serious_tester - для тестировщиков и QA

QA - Bad Company!
QA - Bad Company!
2 602 участник(ов)

Позитив и негатив про компании или курсы, куда не стоит идти работать или учиться, а куда стоит. За пиратский контент - бан. @qa_fin о деньгах Русскоговорящее сообщество: @qa_ru Флудилка: @qaFlood Вакансии: @qa_jobs Финансы: @qa_fin

QA — Автоматизация
QA — Автоматизация
2 434 участник(ов)

1. Обсуждение технологий автоматизированного тестирования 2. Помощь начинающим Ru-сообщество: @qa_ru Джуночат: @qajuniors Вакансии: @qa_jobs Финансы: @qa_fin Митапы и события: @qaevents Паблики: @serious_tester, @automation_remarks, @atinfo

Django
Django
1 931 участник(ов)

Полезная информация и правила: https://github.com/django-ru/faq Вакансии и резюме: @django_jobs Пофлудить идём сюда: @django_flood Статистика чата: combot.org/chat/-1001063854692

QA - Finance
QA - Finance
1 347 участник(ов)

Чат о деньгах тестировщиков. ЗП, релокейты,оферы. @qa_bad_company - обсуждение компаний/курсов и карьерного роста для QA @qa_automation - авто QA Холивары, политика, религия-бан Реклама, спам, оскорбления - бан Для флуда используйте другой чат

django_jobs
django_jobs
916 участник(ов)

Поиск и предложения работы (Django) Правила: https://t.me/django_jobs/4 Вакансии с тегом #job улетают в канал @django_jobs_board Вопросы к @amureki Основной чат @pydjango

Django
Django
733 участник(ов)

Веб-фреймворк для перфекционистов с дедлайнами. Наша группа на vk: https://vk.com/django_framework В Discord: https://discord.me/django_framework по всем вопросам @MechanisM

django flood
django flood
71 участник(ов)

Флудилка джангистов Пока без правил