Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🌐 Fix typos in Russian translations for docs/ru/docs/tutorial/background-tasks.md, docs/ru/docs/tutorial/body-nested-models.md, docs/ru/docs/tutorial/debugging.md, docs/ru/docs/tutorial/testing.md #10311

Merged
merged 7 commits into from Jan 9, 2024
2 changes: 1 addition & 1 deletion docs/ru/docs/tutorial/background-tasks.md
Expand Up @@ -71,7 +71,7 @@

В этом примере сообщения будут записаны в `log.txt` *после* того, как ответ сервера был отправлен.

Если бы в запросе была очередь `q`, она бы первой записалась в `log.txt` фоновой задачей (потому что вызывается в зависимости `get_query`).
Если бы в запрос был передан query-параметр `q`, он бы первыми записался в `log.txt` фоновой задачей (потому что вызывается в зависимости `get_query`).

После другая фоновая задача, которая была сгенерирована в функции, запишет сообщение из параметра `email`.

Expand Down
2 changes: 1 addition & 1 deletion docs/ru/docs/tutorial/body-nested-models.md
Expand Up @@ -85,7 +85,7 @@ my_list: List[str]

И в Python есть специальный тип данных для множеств уникальных элементов - `set`.

Тогда мы может обьявить поле `tags` как множество строк:
Тогда мы можем обьявить поле `tags` как множество строк:

=== "Python 3.10+"

Expand Down
2 changes: 1 addition & 1 deletion docs/ru/docs/tutorial/debugging.md
Expand Up @@ -22,7 +22,7 @@ $ python myapp.py

</div>

но не вызывался, когда другой файл импортирует это, например::
но не вызывался, когда другой файл импортирует это, например:

```Python
from myapp import app
Expand Down
34 changes: 17 additions & 17 deletions docs/ru/docs/tutorial/testing.md
Expand Up @@ -4,7 +4,7 @@

Тестирование основано на библиотеке <a href="https://www.python-httpx.org" class="external-link" target="_blank">HTTPX</a>, которая в свою очередь основана на библиотеке Requests, так что все действия знакомы и интуитивно понятны.

Используя эти инструменты, Вы можете напрямую задействовать <a href="https://docs.pytest.org/" class="external-link" target="_blank">pytest</a> с **FastAPI**.
AlertRED marked this conversation as resolved.
Show resolved Hide resolved
Используя эти инструменты, вы можете напрямую задействовать <a href="https://docs.pytest.org/" class="external-link" target="_blank">pytest</a> с **FastAPI**.

## Использование класса `TestClient`

Expand All @@ -15,11 +15,11 @@

Импортируйте `TestClient`.

Создайте объект `TestClient`, передав ему в качестве параметра Ваше приложение **FastAPI**.
Создайте объект `TestClient`, передав ему в качестве параметра ваше приложение **FastAPI**.

Создайте функцию, название которой должно начинаться с `test_` (это стандарт из соглашений `pytest`).

Используйте объект `TestClient` так же, как Вы используете `httpx`.
Используйте объект `TestClient` так же, как вы используете `httpx`.

Напишите простое утверждение с `assert` дабы проверить истинность Python-выражения (это тоже стандарт `pytest`).

Expand All @@ -37,20 +37,20 @@
!!! note "Технические детали"
Также можно написать `from starlette.testclient import TestClient`.

**FastAPI** предоставляет тот же самый `starlette.testclient` как `fastapi.testclient`. Это всего лишь небольшое удобство для Вас, как разработчика.
**FastAPI** предоставляет тот же самый `starlette.testclient` как `fastapi.testclient`. Это всего лишь небольшое удобство для вас, как разработчика.

!!! tip "Подсказка"
Если для тестирования Вам, помимо запросов к приложению FastAPI, необходимо вызывать асинхронные функции (например, для подключения к базе данных с помощью асинхронного драйвера), то ознакомьтесь со страницей [Асинхронное тестирование](../advanced/async-tests.md){.internal-link target=_blank} в расширенном руководстве.
Если для тестирования вам, помимо запросов к приложению FastAPI, необходимо вызывать асинхронные функции (например, для подключения к базе данных с помощью асинхронного драйвера), то ознакомьтесь со страницей [Асинхронное тестирование](../advanced/async-tests.md){.internal-link target=_blank} в расширенном руководстве.

## Разделение тестов и приложения

В реальном приложении Вы, вероятно, разместите тесты в отдельном файле.
В реальном приложении вы, вероятно, разместите тесты в отдельном файле.

Кроме того, Ваше приложение **FastAPI** может состоять из нескольких файлов, модулей и т.п.
Кроме того, ваше приложение **FastAPI** может состоять из нескольких файлов, модулей и т.п.

### Файл приложения **FastAPI**

Допустим, структура файлов Вашего приложения похожа на ту, что описана на странице [Более крупные приложения](./bigger-applications.md){.internal-link target=_blank}:
Допустим, структура файлов вашего приложения похожа на ту, что описана на странице [Более крупные приложения](./bigger-applications.md){.internal-link target=_blank}:

```
.
Expand All @@ -59,7 +59,7 @@
│   └── main.py
```

Здесь файл `main.py` является "точкой входа" в Ваше приложение и содержит инициализацию Вашего приложения **FastAPI**:
Здесь файл `main.py` является "точкой входа" в ваше приложение и содержит инициализацию вашего приложения **FastAPI**:


```Python
Expand All @@ -68,7 +68,7 @@

### Файл тестов

Также у Вас может быть файл `test_main.py` содержащий тесты. Можно разместить тестовый файл и файл приложения в одной директории (в директориях для Python-кода желательно размещать и файл `__init__.py`):
Также у вас может быть файл `test_main.py` содержащий тесты. Можно разместить тестовый файл и файл приложения в одной директории (в директориях для Python-кода желательно размещать и файл `__init__.py`):

``` hl_lines="5"
.
Expand All @@ -78,7 +78,7 @@
│   └── test_main.py
```

Так как оба файла находятся в одной директории, для импорта объекта приложения из файла `main` в файл `test_main` Вы можете использовать относительный импорт:
Так как оба файла находятся в одной директории, для импорта объекта приложения из файла `main` в файл `test_main` вы можете использовать относительный импорт:

```Python hl_lines="3"
{!../../../docs_src/app_testing/test_main.py!}
Expand Down Expand Up @@ -154,15 +154,15 @@
{!> ../../../docs_src/app_testing/app_b/test_main.py!}
```

Если Вы не знаете, как передать информацию в запросе, можете воспользоваться поисковиком (погуглить) и задать вопрос: "Как передать информацию в запросе с помощью `httpx`", можно даже спросить: "Как передать информацию в запросе с помощью `requests`", поскольку дизайн HTTPX основан на дизайне Requests.
Если вы не знаете, как передать информацию в запросе, можете воспользоваться поисковиком (погуглить) и задать вопрос: "Как передать информацию в запросе с помощью `httpx`", можно даже спросить: "Как передать информацию в запросе с помощью `requests`", поскольку дизайн HTTPX основан на дизайне Requests.

Затем Вы просто применяете найденные ответы в тестах.
Затем вы просто применяете найденные ответы в тестах.

Например:

* Передаёте *path*-параметры или *query*-параметры, вписав их непосредственно в строку URL.
* Передаёте JSON в теле запроса, передав Python-объект (например: `dict`) через именованный параметр `json`.
* Если же Вам необходимо отправить *форму с данными* вместо JSON, то используйте параметр `data` вместо `json`.
* Если же вам необходимо отправить *форму с данными* вместо JSON, то используйте параметр `data` вместо `json`.
* Для передачи *заголовков*, передайте объект `dict` через параметр `headers`.
* Для передачи *cookies* также передайте `dict`, но через параметр `cookies`.

Expand All @@ -171,11 +171,11 @@
!!! info "Информация"
Обратите внимание, что `TestClient` принимает данные, которые можно конвертировать в JSON, но не модели Pydantic.

Если в Ваших тестах есть модели Pydantic и Вы хотите отправить их в тестируемое приложение, то можете использовать функцию `jsonable_encoder`, описанную на странице [Кодировщик совместимый с JSON](encoder.md){.internal-link target=_blank}.
Если в ваших тестах есть модели Pydantic и вы хотите отправить их в тестируемое приложение, то можете использовать функцию `jsonable_encoder`, описанную на странице [Кодировщик совместимый с JSON](encoder.md){.internal-link target=_blank}.

## Запуск тестов

Далее Вам нужно установить `pytest`:
Далее вам нужно установить `pytest`:

<div class="termy">

Expand All @@ -187,7 +187,7 @@ $ pip install pytest

</div>

Он автоматически найдёт все файлы и тесты, выполнит их и предоставит Вам отчёт о результатах тестирования.
Он автоматически найдёт все файлы и тесты, выполнит их и предоставит вам отчёт о результатах тестирования.

Запустите тесты командой `pytest` и увидите результат:

Expand Down