From: timothy <53824764+jts8257@users.noreply.github.com> Date: Tue, 10 Dec 2024 11:24:48 +0000 (+0900) Subject: 🌐 Add Korean translation for `docs/ko/docs/tutorial/testing.md` (#12968) X-Git-Tag: 0.115.7~175 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=230f2077b9d7acbc48c1a7afb600e50461145926;p=thirdparty%2Ffastapi%2Ffastapi.git 🌐 Add Korean translation for `docs/ko/docs/tutorial/testing.md` (#12968) --- diff --git a/docs/ko/docs/tutorial/testing.md b/docs/ko/docs/tutorial/testing.md new file mode 100644 index 0000000000..a483cbf005 --- /dev/null +++ b/docs/ko/docs/tutorial/testing.md @@ -0,0 +1,243 @@ +# í ì¤í + +Starlette ëë¶ì **FastAPI** 를 í ì¤í¸íë ì¼ì ì½ê³ ì¦ê±°ì´ ì¼ì´ ëììµëë¤. + +Starletteë HTTPX를 기ë°ì¼ë¡ íë©°, ì´ë Requests를 기ë°ì¼ë¡ ì¤ê³ëì기 ë문ì ë§¤ì° ì¹ìíê³ ì§ê´ì ì ëë¤. + +ì´ë¥¼ ì¬ì©íë©´ FastAPIìì pytest를 ì§ì ì¬ì©í ì ììµëë¤. + +## `TestClient` ì¬ì©í기 + +/// info | ì ë³´ + +`TestClient` ì¬ì©íë ¤ë©´, ì°ì `httpx` 를 ì¤ì¹í´ì¼ í©ëë¤. + +[virtual environment](../virtual-environments.md){.internal-link target=_blank} 를 ë§ë¤ê³ , íì±í ìí¨ ë¤ì ì¤ì¹íì¸ì. ìì: + +```console +$ pip install httpx +``` + +/// + +`TestClient` 를 ìí¬í¸íì¸ì. + +**FastAPI** ì´í리ì¼ì´ì ì ì ë¬íì¬ `TestClient` 를 ë§ëì¸ì. + +ì´ë¦ì´ `test_` ë¡ ììíë í¨ì를 ë§ëì¸ì(`pytest` ì íì¤ì ì¸ ê´ë¡ì ëë¤). + +`httpx` 를 ì¬ì©íë ê²ê³¼ ê°ì ë°©ìì¼ë¡ `TestClient` ê°ì²´ë¥¼ ì¬ì©íì¸ì. + +íì¤ì ì¸ íì´ì¬ 문ë²ì ì´ì©íì¬ íì¸ì´ íìí ê³³ì ê°ë¨í `assert` 문ì¥ì ìì±íì¸ì(ìì íì¤ì ì¸ `pytest` ê´ë¡ì ëë¤). + +{* ../../docs_src/app_testing/tutorial001.py hl[2,12,15:18] *} + +/// tip | í + +í ì¤í¸ë¥¼ ìí í¨ìë `async def` ê° ìëë¼ `def` ë¡ ìì±ë¨ì 주ìíì¸ì. + +ê·¸ë¦¬ê³ í´ë¼ì´ì¸í¸ì ëí í¸ì¶ë `await` 를 ì¬ì©íì§ ìë ì¼ë° í¸ì¶ì ëë¤. + +ì´ë ê² íì¬ ë³µì¡í ê³¼ì ìì´ `pytest` 를 ì§ì ì ì¼ë¡ ì¬ì©í ì ììµëë¤. + +/// + +/// note | 기ì ì¸ë¶ì¬í + +`from starlette.testclient import TestClient` ìì ì¬ì©í ì ììµëë¤. + +**FastAPI** ë ê°ë°ìì í¸ì를 ìí´ `starlette.testclient` 를 `fastapi.testclient` ë¡ë ì ê³µí ë¿ì ëë¤. ì´ë ë¨ì§ `Starlette` ìì ì§ì ê°ì ¸ì¤ëì§ì ì°¨ì´ì¼ ë¿ì ëë¤. + +/// + +/// tip | í + +FastAPI ì í리ì¼ì´ì ì ìì²ì ë³´ë´ë ê² ì¸ìë í ì¤í¸ìì `async` í¨ì를 í¸ì¶íê³ ì¶ë¤ë©´ (ì: ë¹ë기 ë°ì´í°ë² ì´ì¤ í¨ì), ì¬í íí 리ì¼ì [Async Tests](../advanced/async-tests.md){.internal-link target=_blank} 를 참조íì¸ì. + +/// + +## í ì¤í¸ ë¶ë¦¬í기 + +ì¤ì ì í리ì¼ì´ì ììë í ì¤í¸ë¥¼ ë³ëì íì¼ë¡ ëëë ê²½ì°ê° ë§ìµëë¤. + + +ê·¸ë¦¬ê³ **FastAPI** ì í리ì¼ì´ì ë ì¬ë¬ íì¼ì´ë 모ë ë±ì¼ë¡ 구ì±ë ì ììµëë¤. + +### **FastAPI** app íì¼ + +[Bigger Applications](bigger-applications.md){.internal-link target=_blank} ì ë¬ì¬ë íì¼ êµ¬ì¡°ë¥¼ ê°ì§ê³ ìë ê²ì¼ë¡ ê°ì í´ë´ ìë¤. + +``` +. +âââ app +â  âââ __init__.py +â  âââ main.py +``` + +`main.py` íì¼ ìì **FastAPI** app ì ë§ë¤ììµëë¤: + +{* ../../docs_src/app_testing/main.py *} + +### í ì¤í¸ íì¼ + +í ì¤í¸ë¥¼ ìí´ `test_main.py` ë¼ë íì¼ì ìì±í ì ììµëë¤. ì´ íì¼ì ëì¼í Python í¨í¤ì§(ì¦, `__init__.py` íì¼ì´ ìë ëì¼í ëë í°ë¦¬)ì ìì¹í ì ììµëë¤. + +``` hl_lines="5" +. +âââ app +â  âââ __init__.py +â  âââ main.py +â  âââ test_main.py +``` + +íì¼ë¤ì´ ëì¼í í¨í¤ì§ì ìì¹í´ ìì¼ë¯ë¡, ìë 참조를 ì¬ì©íì¬ `main` ìì `app` ê°ì²´ë¥¼ ìí¬í¸ í´ì¬ ì ììµëë¤. + +{* ../../docs_src/app_testing/test_main.py hl[3] *} + + +...ê·¸ë¦¬ê³ ì´ì ì ìì±íë ê²ê³¼ ê°ì í ì¤í¸ ì½ë를 ìì±í ì ììµëë¤. + +## í ì¤í¸: íì¥ë ìì + +ì´ì ìì ìì를 íì¥íê³ ë ë§ì ì¸ë¶ ì¬íì ì¶ê°íì¬ ë¤ìí ë¶ë¶ì ì´ë»ê² í ì¤í¸íëì§ ì´í´ë³´ê² ìµëë¤. + +### íì¥ë FastAPI ì í리ì¼ì´ì íì¼ + +ì´ì ê³¼ ê°ì íì¼ êµ¬ì¡°ë¥¼ ê³ì ì¬ì©í´ ë³´ê² ìµëë¤. + +``` +. +âââ app +â  âââ __init__.py +â  âââ main.py +â  âââ test_main.py +``` + +ì´ì **FastAPI** ì±ì´ ìë `main.py` íì¼ì ëª ê°ì§ ë¤ë¥¸ **ê²½ë¡ ìì ** ì´ ì¶ê°ë ê²½ì°ë¥¼ ìê°í´ë´ ìë¤. + +ë¨ì¼ ì¤ë¥ë¥¼ ë°íí ì ìë `GET` ìì ì´ ììµëë¤. + +ì¬ë¬ ë¤ë¥¸ ì¤ë¥ë¥¼ ë°íí ì ìë `POST` ìì ì´ ììµëë¤. + +ë *ê²½ë¡ ìì * 모ë `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 | í + +ë ì ìì¼ë©´ `Annotated` ë²ì ì¬ì©ì ê¶ì¥í©ëë¤. + +/// + +```Python +{!> ../../docs_src/app_testing/app_b_py310/main.py!} +``` + +//// + +//// tab | Python 3.8+ non-Annotated + +/// tip | í + +ë ì ìì¼ë©´ `Annotated` ë²ì ì¬ì©ì ê¶ì¥í©ëë¤. + +/// + +```Python +{!> ../../docs_src/app_testing/app_b/main.py!} +``` + +//// + +### íì¥ë í ì¤í¸ íì¼ + +ì´ì ë `test_main.py` 를 íì¥ë í ì¤í¸ë¤ë¡ ìì í ì ììµëë¤: + +{* ../../docs_src/app_testing/app_b/test_main.py *} + + +í´ë¼ì´ì¸í¸ê° ìì²ì ì 보를 ì ë¬í´ì¼ íëë° ë°©ë²ì ëª¨ë¥´ê² ë¤ë©´, `httpx`ìì í´ë¹ ìì ì ìííë ë°©ë²ì ê²ì(Google)íê±°ë, `requests`ììì ë°©ë²ì ê²ìí´ë³´ì¸ì. HTTPXë Requestsì ëìì¸ì 기ë°ì¼ë¡ ì¤ê³ëììµëë¤. + +ê·¸ í, í ì¤í¸ììë ëì¼íê² ì ì©íë©´ ë©ëë¤. + +ìì: + +* *ê²½ë¡* í¹ì *쿼리* 매ê°ë³ì를 ì ë¬íë ¤ë©´, URL ìì²´ì ì¶ê°íë¤. +* JSON 본문ì ì ë¬íë ¤ë©´, íì´ì¬ ê°ì²´ (ì를ë¤ë©´ `dict`) 를 `json` íë¼ë¯¸í°ë¡ ì ë¬íë¤. +* JSON ëì *í¼ ë°ì´í°* 를 ë³´ë´ì¼íë¤ë©´, `data` íë¼ë¯¸í°ë¥¼ ëì ì ë¬íë¤. +* *í¤ë* 를 ì ë¬íë ¤ë©´, `headers` íë¼ë¯¸í°ì `dict` 를 ì ë¬íë¤. +* *ì¿ í¤* 를 ì ë¬íë ¤ë©´, `cookies` íë¼ë¯¸í°ì `dict` 를 ì ë¬íë¤. + +ë°±ìëë¡ ë°ì´í°ë¥¼ ì´ë»ê² ë³´ë´ëì§ ì 보를 ë ì»ì¼ë ¤ë©´ (`httpx` í¹ì `TestClient` 를 ì´ì©í´ì) HTTPX documentation 를 íì¸íì¸ì. + +/// info | ì ë³´ + +`TestClient` ë Pydantic 모ë¸ì´ ìëë¼ JSON ì¼ë¡ ë³íë ì ìë ë°ì´í°ë¥¼ ë°ìµëë¤. + +ë§ì½ í ì¤í¸ì¤ Pydantic 모ë¸ì ì´í리ì¼ì´ì ì¼ë¡ì ë³´ë´ê³ ì¶ë¤ë©´, [JSON í¸í ê°ë¥ ì¸ì½ë](encoder.md){.internal-link target=_blank} ì ì¤ëª ëì´ ìë `jsonable_encoder` 를 ì¬ì©í ì ììµëë¤. + +/// + +## ì¤íí기 + +í ì¤í¸ ì½ë를 ìì±íê³ , `pytest` 를 ì¤ì¹í´ì¼í©ëë¤. + +[virtual environment](../virtual-environments.md){.internal-link target=_blank} 를 ë§ë¤ê³ , íì±í ìí¨ ë¤ì ì¤ì¹íì¸ì. ìì: + +