1 Flashcards
(37 cards)
Что делает фикстура в pytest?
Подготавливает окружение для тестов — например, создаёт подключение к БД, создаёт тестовые данные, и очищает после завершения теста.
Что делает декоратор @pytest.mark.parametrize?
Позволяет выполнить один тест несколько раз с разными параметрами.
Какой scope бывает у фикстур?
function, class, module, package, session
Что делает tmp_path в pytest?
Создаёт временную директорию, которая автоматически удаляется после завершения теста.
Что делает monkeypatch в pytest?
Позволяет переопределить переменные окружения, атрибуты и т.д. во время теста.
Что делает mocker?
Это фикстура из pytest-mock, которая позволяет использовать mock/patch из unittest удобно в стиле pytest.
Как проверить, что функция вызвалась с определёнными аргументами?
```python
mock_function.assert_called_with(arg1, arg2)
~~~
Как игнорировать тест в pytest?
@pytest.mark.skip или @pytest.mark.skipif(…)
Как замедлить падение теста при фейле?
Можно использовать time.sleep(), но лучше использовать retry-плагины (например, flaky или rerunfailures).
Что выведет этот код?
```python
def f(x=[]):
x.append(1)
return x
print(f())
print(f())
~~~
[1], [1, 2] — список сохраняет состояние между вызовами, потому что [] создаётся один раз при определении функции.
Что выведет?
```python
a = [1, 2, 3]
b = a
a = [4, 5]
print(b)
~~~
[1, 2, 3] — b ссылается на старый список. Присваивание a = [4, 5]
создаёт новый объект, b не изменяется.
Найди ошибку:
```python
def test_sum():
assert sum([1, 2, 3]) == 10
~~~
Ожидаемое значение неверно — sum([1, 2, 3]) == 6
Как отловить исключение в pytest?
```python
with pytest.raises(ValueError):
raise ValueError(“Ошибка”)
~~~
Как сделать фикстуру, которая будет вызываться один раз на весь модуль?
```python
@pytest.fixture(scope=”module”)
def my_fixture():
…
~~~
Какие бывают HTTP методы?
GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
Что означает код ответа 200?
Успешный запрос
Что означает код ответа 404?
Ресурс не найден
Чем отличается PUT от PATCH?
PUT заменяет целиком, PATCH — частично обновляет ресурс
Как проверить статус-код в requests?
```python
response = requests.get(…)
assert response.status_code == 200
~~~
Как проверить, что в ответе есть поле?
```python
assert “name” in response.json()
~~~
Как выбрать все строки из таблицы users?
SELECT * FROM users;
Как выбрать только email’ы, заканчивающиеся на @gmail.com?
SELECT email FROM users WHERE email LIKE ‘%@gmail.com’;
Что делает JOIN?
Объединяет таблицы по связанным колонкам.
В чём разница между INNER JOIN и LEFT JOIN?
INNER — только совпадения в обеих таблицах. LEFT — все из левой + совпавшие из правой.