--- /dev/null
+# Testando
+
+Graças ao <a href="https://www.starlette.io/testclient/" class="external-link" target="_blank">Starlette</a>, testar aplicativos **FastAPI** é fåcil e agradåvel.
+
+Ele Ă© baseado no <a href="https://www.python-httpx.org" class="external-link" target="_blank">HTTPX</a>, que por sua vez Ă© projetado com base em Requests, por isso Ă© muito familiar e intuitivo.
+
+Com ele, vocĂȘ pode usar o <a href="https://docs.pytest.org/" class="external-link" target="_blank">pytest</a> diretamente com **FastAPI**.
+
+## Usando `TestClient`
+
+/// info | "Informação"
+
+Para usar o `TestClient`, primeiro instale o <a href="https://www.python-httpx.org" class="external-link" target="_blank">`httpx`</a>.
+
+Certifique-se de criar um [ambiente virtual](../virtual-environments.md){.internal-link target=_blank}, ativĂĄ-lo e instalĂĄ-lo, por exemplo:
+
+```console
+$ pip install httpx
+```
+
+///
+
+Importe `TestClient`.
+
+Crie um `TestClient` passando seu aplicativo **FastAPI** para ele.
+
+Crie funçÔes com um nome que comece com `test_` (essa é a convenção padrão do `pytest`).
+
+Use o objeto `TestClient` da mesma forma que vocĂȘ faz com `httpx`.
+
+Escreva instruçÔes `assert` simples com as expressĂ”es Python padrĂŁo que vocĂȘ precisa verificar (novamente, `pytest` padrĂŁo).
+
+```Python hl_lines="2 12 15-18"
+{!../../../docs_src/app_testing/tutorial001.py!}
+```
+
+/// tip | "Dica"
+
+Observe que as funçÔes de teste são `def` normais, não `async def`.
+
+E as chamadas para o cliente também são chamadas normais, não usando `await`.
+
+Isso permite que vocĂȘ use `pytest` diretamente sem complicaçÔes.
+
+///
+
+/// note | "Detalhes técnicos"
+
+VocĂȘ tambĂ©m pode usar `from starlette.testclient import TestClient`.
+
+**FastAPI** fornece o mesmo `starlette.testclient` que `fastapi.testclient` apenas como uma conveniĂȘncia para vocĂȘ, o desenvolvedor. Mas ele vem diretamente da Starlette.
+
+///
+
+/// tip | "Dica"
+
+Se vocĂȘ quiser chamar funçÔes `async` em seus testes alĂ©m de enviar solicitaçÔes ao seu aplicativo FastAPI (por exemplo, funçÔes de banco de dados assĂncronas), dĂȘ uma olhada em [Testes assĂncronos](../advanced/async-tests.md){.internal-link target=_blank} no tutorial avançado.
+
+///
+
+## Separando testes
+
+Em uma aplicação real, vocĂȘ provavelmente teria seus testes em um arquivo diferente.
+
+E seu aplicativo **FastAPI** também pode ser composto de vårios arquivos/módulos, etc.
+
+### Arquivo do aplicativo **FastAPI**
+
+Digamos que vocĂȘ tenha uma estrutura de arquivo conforme descrito em [Aplicativos maiores](bigger-applications.md){.internal-link target=_blank}:
+
+```
+.
+âââ app
+â  âââ __init__.py
+â  âââ main.py
+```
+
+No arquivo `main.py` vocĂȘ tem seu aplicativo **FastAPI**:
+
+
+```Python
+{!../../../docs_src/app_testing/main.py!}
+```
+
+### Arquivo de teste
+
+EntĂŁo vocĂȘ poderia ter um arquivo `test_main.py` com seus testes. Ele poderia estar no mesmo pacote Python (o mesmo diretĂłrio com um arquivo `__init__.py`):
+
+``` hl_lines="5"
+.
+âââ app
+â  âââ __init__.py
+â  âââ main.py
+â  âââ test_main.py
+```
+
+Como esse arquivo estĂĄ no mesmo pacote, vocĂȘ pode usar importaçÔes relativas para importar o objeto `app` do mĂłdulo `main` (`main.py`):
+
+```Python hl_lines="3"
+{!../../../docs_src/app_testing/test_main.py!}
+```
+
+...e ter o cĂłdigo para os testes como antes.
+
+## Testando: exemplo estendido
+
+Agora vamos estender este exemplo e adicionar mais detalhes para ver como testar diferentes partes.
+
+### Arquivo de aplicativo **FastAPI** estendido
+
+Vamos continuar com a mesma estrutura de arquivo de antes:
+
+```
+.
+âââ app
+â  âââ __init__.py
+â  âââ main.py
+â  âââ test_main.py
+```
+
+Digamos que agora o arquivo `main.py` com seu aplicativo **FastAPI** tenha algumas outras **operaçÔes de rotas**.
+
+Ele tem uma operação `GET` que pode retornar um erro.
+
+Ele tem uma operação `POST` que pode retornar vårios erros.
+
+Ambas as *operaçÔes de rotas* requerem um cabeçalho `X-Token`.
+
+//// tab | Python 3.10+
+
+```Python
+{!> ../../../docs_src/app_testing/app_b_an_py310/main.py!}
+```
+
+////
+
+//// tab | Python 3.9+
+
+```Python
+{!> ../../../docs_src/app_testing/app_b_an_py39/main.py!}
+```
+
+////
+
+//// tab | Python 3.8+
+
+```Python
+{!> ../../../docs_src/app_testing/app_b_an/main.py!}
+```
+
+////
+
+//// tab | Python 3.10+ non-Annotated
+
+/// tip | "Dica"
+
+Prefira usar a versĂŁo `Annotated` se possĂvel.
+
+///
+
+```Python
+{!> ../../../docs_src/app_testing/app_b_py310/main.py!}
+```
+
+////
+
+//// tab | Python 3.8+ non-Annotated
+
+/// tip | "Dica"
+
+Prefira usar a versĂŁo `Annotated` se possĂvel.
+
+///
+
+```Python
+{!> ../../../docs_src/app_testing/app_b/main.py!}
+```
+
+////
+
+### Arquivo de teste estendido
+
+VocĂȘ pode entĂŁo atualizar `test_main.py` com os testes estendidos:
+
+```Python
+{!> ../../../docs_src/app_testing/app_b/test_main.py!}
+```
+
+Sempre que vocĂȘ precisar que o cliente passe informaçÔes na requisição e nĂŁo souber como, vocĂȘ pode pesquisar (no Google) como fazer isso no `httpx`, ou atĂ© mesmo como fazer isso com `requests`, jĂĄ que o design do HTTPX Ă© baseado no design do Requests.
+
+Depois Ă© sĂł fazer o mesmo nos seus testes.
+
+Por exemplo:
+
+* Para passar um parĂąmetro *path* ou *query*, adicione-o Ă prĂłpria URL.
+* Para passar um corpo JSON, passe um objeto Python (por exemplo, um `dict`) para o parĂąmetro `json`.
+* Se vocĂȘ precisar enviar *Dados de FormulĂĄrio* em vez de JSON, use o parĂąmetro `data`.
+* Para passar *headers*, use um `dict` no parĂąmetro `headers`.
+* Para *cookies*, um `dict` no parĂąmetro `cookies`.
+
+Para mais informaçÔes sobre como passar dados para o backend (usando `httpx` ou `TestClient`), consulte a <a href="https://www.python-httpx.org" class="external-link" target="_blank">documentação do HTTPX</a>.
+
+/// info | "Informação"
+
+Observe que o `TestClient` recebe dados que podem ser convertidos para JSON, nĂŁo para modelos Pydantic.
+
+Se vocĂȘ tiver um modelo Pydantic em seu teste e quiser enviar seus dados para o aplicativo durante o teste, poderĂĄ usar o `jsonable_encoder` descrito em [Codificador compatĂvel com JSON](encoder.md){.internal-link target=_blank}.
+
+///
+
+## Execute-o
+
+Depois disso, vocĂȘ sĂł precisa instalar o `pytest`.
+
+Certifique-se de criar um [ambiente virtual](../virtual-environments.md){.internal-link target=_blank}, ativĂĄ-lo e instalĂĄ-lo, por exemplo:
+
+<div class="termy">
+
+```console
+$ pip install pytest
+
+---> 100%
+```
+
+</div>
+
+Ele detectarĂĄ os arquivos e os testes automaticamente, os executarĂĄ e informarĂĄ os resultados para vocĂȘ.
+
+Execute os testes com:
+
+<div class="termy">
+
+```console
+$ pytest
+
+================ test session starts ================
+platform linux -- Python 3.6.9, pytest-5.3.5, py-1.8.1, pluggy-0.13.1
+rootdir: /home/user/code/superawesome-cli/app
+plugins: forked-1.1.3, xdist-1.31.0, cov-2.8.1
+collected 6 items
+
+---> 100%
+
+test_main.py <span style="color: green; white-space: pre;">...... [100%]</span>
+
+<span style="color: green;">================= 1 passed in 0.03s =================</span>
+```
+
+</div>