1 Flashcards

(37 cards)

1
Q

Что делает фикстура в pytest?

A

Подготавливает окружение для тестов — например, создаёт подключение к БД, создаёт тестовые данные, и очищает после завершения теста.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что делает декоратор @pytest.mark.parametrize?

A

Позволяет выполнить один тест несколько раз с разными параметрами.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Какой scope бывает у фикстур?

A

function, class, module, package, session

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Что делает tmp_path в pytest?

A

Создаёт временную директорию, которая автоматически удаляется после завершения теста.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что делает monkeypatch в pytest?

A

Позволяет переопределить переменные окружения, атрибуты и т.д. во время теста.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Что делает mocker?

A

Это фикстура из pytest-mock, которая позволяет использовать mock/patch из unittest удобно в стиле pytest.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Как проверить, что функция вызвалась с определёнными аргументами?

A

```python
mock_function.assert_called_with(arg1, arg2)
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как игнорировать тест в pytest?

A

@pytest.mark.skip или @pytest.mark.skipif(…)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Как замедлить падение теста при фейле?

A

Можно использовать time.sleep(), но лучше использовать retry-плагины (например, flaky или rerunfailures).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Что выведет этот код?

```python
def f(x=[]):
x.append(1)
return x

print(f())
print(f())
~~~

A

[1], [1, 2] — список сохраняет состояние между вызовами, потому что [] создаётся один раз при определении функции.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что выведет?

```python
a = [1, 2, 3]
b = a
a = [4, 5]
print(b)
~~~

A

[1, 2, 3] — b ссылается на старый список. Присваивание a = [4, 5] создаёт новый объект, b не изменяется.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Найди ошибку:

```python
def test_sum():
assert sum([1, 2, 3]) == 10
~~~

A

Ожидаемое значение неверно — sum([1, 2, 3]) == 6

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Как отловить исключение в pytest?

A

```python
with pytest.raises(ValueError):
raise ValueError(“Ошибка”)
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как сделать фикстуру, которая будет вызываться один раз на весь модуль?

A

```python
@pytest.fixture(scope=”module”)
def my_fixture():

~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Какие бывают HTTP методы?

A

GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Что означает код ответа 200?

A

Успешный запрос

17
Q

Что означает код ответа 404?

A

Ресурс не найден

18
Q

Чем отличается PUT от PATCH?

A

PUT заменяет целиком, PATCH — частично обновляет ресурс

19
Q

Как проверить статус-код в requests?

A

```python
response = requests.get(…)
assert response.status_code == 200
~~~

20
Q

Как проверить, что в ответе есть поле?

A

```python
assert “name” in response.json()
~~~

21
Q

Как выбрать все строки из таблицы users?

A

SELECT * FROM users;

22
Q

Как выбрать только email’ы, заканчивающиеся на @gmail.com?

A

SELECT email FROM users WHERE email LIKE ‘%@gmail.com’;

23
Q

Что делает JOIN?

A

Объединяет таблицы по связанным колонкам.

24
Q

В чём разница между INNER JOIN и LEFT JOIN?

A

INNER — только совпадения в обеих таблицах. LEFT — все из левой + совпавшие из правой.

25
Как посчитать количество строк?
SELECT COUNT(*) FROM table;
26
Что такое CI?
Continuous Integration — автоматическая проверка и сборка кода при каждом коммите.
27
Что такое CD?
Continuous Delivery/Deployment — автоматическая выкладка на сервер.
28
Пример команды запуска тестов в GitLab CI?
```yaml script: - pytest --tb=short ```
29
Что такое pipeline?
Последовательность этапов автоматизации: install → test → deploy
30
Какую команду используют для генерации покрытия?
pytest --cov=.
31
Что такое smoke-тест?
Поверхностная проверка, что система вообще запускается.
32
Что такое регрессионный тест?
Проверка, что новые изменения не поломали старое.
33
Что такое баг-репорт?
Документ, в котором описывается ошибка: шаги, фактический результат, ожидаемый результат.
34
Что такое тест-кейс?
Набор шагов, входных данных и ожидаемого результата.
35
Что такое тест-план?
Документ, описывающий объём, подходы и критерии тестирования.
36
Что такое flaky test?
Нестабильный тест, который иногда проходит, иногда падает — без изменения кода.
37
Что такое test coverage?
Метрика покрытия кода тестами (строки, функции, ветвления и т.д.)