В add_user список по умолчанию сохраняется между вызовами, а lambda поздно читает общую i. При буквальном требовании без второго аргумента вернуть самого пользователя нужен отдельный признак отсутствия аргумента.
Фикстура создаёт соединение, передаёт его тесту через yield и закрывает в finally. Обычное падение теста не отменяет teardown; ошибка подключения до yield даёт ошибку setup, и тело теста не выполняется.
Назовите фактический опыт UI- и API-автоматизации, язык и примерный период регулярной работы на Python. Отделяйте коммерческие задачи от обучения и разового знакомства.
Кортеж — неизменяемая последовательность объектов. В Python list, dict и set изменяемы, а int, float, str, tuple и frozenset неизменяемы; при этом внутри кортежа могут находиться изменяемые объекты.
Генератор — итератор, который выдаёт значения по мере запроса и сохраняет состояние между выдачами. Вызов функции с yield создаёт объект-генератор; это и есть ответ на вторую часть вопроса.
Ответьте о реальной готовности перейти на Python и объясните мотивацию. Обозначьте текущий уровень, переносимые навыки и области, которые придётся освоить.
Результат: False, False, True, False. У A нет собственного сравнения значений; у dataclass B нет объявленных полей, поэтому сгенерированное сравнение двух B сравнивает пустые наборы полей.
Mutable-объекты можно изменять на месте: list, dict, set. Immutable-объекты не меняют своё значение после создания: int, str, tuple, frozenset. Переприсваивание переменной не означает изменение объекта.
Генератор в Python выдаёт значения постепенно и сохраняет состояние между обращениями. Функция с yield при вызове возвращает генератор, а не выполняется целиком сразу.
Requests даёт простой синхронный HTTP-клиент с sessions, cookies и удобной работой с JSON. Он не является тестовым runner и не обеспечивает assertions, отчёты и асинхронность сам по себе.