Fix 57 ERRORED tests; added tests for the import_comment route; mocked aiohttp requests; fix 52 FAILED tests in CI#171
Conversation
Coverage Report
Summary
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
💩 Code linting failed, use |
|
💩 Code linting failed, use |
1 similar comment
|
💩 Code linting failed, use |
|
и еще, переименуй пр, пожалуйста, в более содержательное название |
|
https://github.com/profcomff/rating-api/actions/runs/28372071943/job/84052082838?pr=171 |
|
для того, чтобы понять 422 из-за чего возникает, просто сделай отладку виде проверки if responce==422 то сделать принт |
|
так что сейчас надо исправить все что выше написал + пару моментов по комментам в коде и будет мердж |
import_comment route; mocked aiohttp requests
import_comment route; mocked aiohttp requestsimport_comment route; mocked aiohttp requests; fix 52 FAILED in CI
import_comment route; mocked aiohttp requests; fix 52 FAILED in CIimport_comment route; mocked aiohttp requests; fix 52 FAILED tests in CI
|
#173 |
…дготовленных SQL-запросов и override_dbsession_in_route, мок для переопределения сессии ручки на тестовую сессию
…стройкой cascade, что дать алхимии понять в каком порядке их удалять, вне зависимости от связанных других таблиц
…turerUserComments
…ACK в фикстуру logging_sql_req_before_execute
…нта в фикстуре lecturers
…чтобы его было возможно замокать и проверить хедеры
… для комментариев; исправлена логика проверки анонимных комментов
…логика проверки в тесте test_get_comment_with_reaction
…вал сигнатуру мокунутого метода
…ьзу mocker, потому чтоэта библиотека не совместима с последними версиями aiohttp (==3.14.1)
petrCher
left a comment
There was a problem hiding this comment.
Супер, что глубоко разобрался в проблеме, очень здорово сделано, молодец!
Посмотри только, пожалуйста, два коммента, они скорее косметические, но для грамотной разработки очень важны. Там даже дело не только в том, что код станет чище и красивее, самое главное, что при изменении какой-то логики другой разраб сможет грамотно что-то исправить/переделать, сейчас он вероятно наделает еще больше ошибок)



Изменения
Проблема падения 57 тестов с ERROR(Исправить падающие тесты #170)
Был исправлен баг из-за которого после падения не анониманого комментария с
ERRORпадало 57 тестовБыла исправлена причина падения теста
test_create_commentс тестовым набором включающим не анонимные комментарииДобавлена проверка полей добавляемых комментариев на соответствие userdata
Написание тестов для ручки import_comments(Написать тесты для ручки
post comment/import)(update) Был реализован мок
aiohttpзапросов(для выдачи ачивки вtest_comment_create) через библиотеку pytest.mocker. От aioresponses решено отказаться, потому что текущая реализация(==0.7.9)не совместима с последними версиямиaiohttp (==3.14.1)Исправлена причина падения 52 тестов в CI. Причина была особенностях реализации
fastapi (==0.137.0+), где сигнатуры классов и функций передаваемых в параметрах ручки считывались как query-параметры. Так в моке юзера использовалсяMagicMock, чья сигнатура*args, **kwargs. Решено с использованиемautospec=TrueвMagicMockдля копирования сигнатуры мокнутого объекта. Подробнее в issue: issue.Детали реализации
ERRORсвязан с не очевидным поведениемsqlalchemy, где на основе того, были ли подготовлены на вставку (INSERT) в текущей не завершенной транзакции одновременно записи в таблицахLecturerUserCommentиComment. Если тест падал сTypeErrorи успевала добавиться только одна из этих таблиц, алхимия в tear-down фикстурыlecturersв итоговый SQL запрос не добавляла строку на удаление записиLecturerUserComment- сразу после этого происходило удаление лектора из таблицыLecturer, что приводило к конфликту ведь не удаленныйLecturerUserCommentпо-прежнему ссылался на него.Решение: (update) В фикстуре lecturers добавлен dbsession.flush() после добавления в транзакцию каждого элемента на удаление.
test_create_commentс не анонимаными комментариями падал, из-за того, что для user-а передавалась не корректнаяuserdata. Были добавлены мок фикстурыauthlib_user,authlib_mockиuser_mockдля подмены данных user-а возвращаемыхUnionAuthCheck-List
blackиisortдля Back-End илиPrettierдля Front-End?