Skip to content

Commit

Permalink
📝 Update docs for testing, fix examples with relative imports (#5302)
Browse files Browse the repository at this point in the history
  • Loading branch information
tiangolo committed Aug 24, 2022
1 parent 2201f29 commit 1835b3f
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 5 deletions.
14 changes: 12 additions & 2 deletions docs/en/docs/advanced/async-tests.md
Expand Up @@ -26,13 +26,23 @@ The important difference for us is that with HTTPX we are not limited to synchro

## Example

For a simple example, let's consider the following `main.py` module:
For a simple example, let's consider a file structure similar to the one described in [Bigger Applications](../tutorial/bigger-applications.md){.internal-link target=_blank} and [Testing](../tutorial/testing.md){.internal-link target=_blank}:

```
.
├── app
│   ├── __init__.py
│   ├── main.py
│   └── test_main.py
```

The file `main.py` would have:

```Python
{!../../../docs_src/async_tests/main.py!}
```

The `test_main.py` module that contains the tests for `main.py` could look like this now:
The file `test_main.py` would have the tests for `main.py`, it could look like this now:

```Python
{!../../../docs_src/async_tests/test_main.py!}
Expand Down
38 changes: 35 additions & 3 deletions docs/en/docs/tutorial/testing.md
Expand Up @@ -50,26 +50,58 @@ And your **FastAPI** application might also be composed of several files/modules

### **FastAPI** app file

Let's say you have a file `main.py` with your **FastAPI** app:
Let's say you have a file structure as described in [Bigger Applications](./bigger-applications.md){.internal-link target=_blank}:

```
.
├── app
│   ├── __init__.py
│   └── main.py
```

In the file `main.py` you have your **FastAPI** app:


```Python
{!../../../docs_src/app_testing/main.py!}
```

### Testing file

Then you could have a file `test_main.py` with your tests, and import your `app` from the `main` module (`main.py`):
Then you could have a file `test_main.py` with your tests. It could live on the same Python package (the same directory with a `__init__.py` file):

```Python
``` hl_lines="5"
.
├── app
│   ├── __init__.py
│   ├── main.py
│   └── test_main.py
```

Because this file is in the same package, you can use relative imports to import the object `app` from the `main` module (`main.py`):

```Python hl_lines="3"
{!../../../docs_src/app_testing/test_main.py!}
```

...and have the code for the tests just like before.

## Testing: extended example

Now let's extend this example and add more details to see how to test different parts.

### Extended **FastAPI** app file

Let's continue with the same file structure as before:

```
.
├── app
│   ├── __init__.py
│   ├── main.py
│   └── test_main.py
```

Let's say that now the file `main.py` with your **FastAPI** app has some other **path operations**.

It has a `GET` operation that could return an error.
Expand Down

0 comments on commit 1835b3f

Please sign in to comment.