pythonasyncioapiasyncfastapiframeworkjsonjson-schemaopenapiopenapi3pydanticpython-typespython3redocreststarletteswaggerswagger-uiuvicornweb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tree:
9ed5f246ed
401-instead-of-403
Kludex-patch-1
add-mandatory-realm-on-basic-auth
add-tests-for-parameter-defaults
additional-scripts-and-presets-in-get_swagger_ui_html
check-zh-translation-prompt
debug
debug2
debug3
dependabot/pip/ruff-0.13.2
enable-hindi
fastapi-people-contributors
fastapi-people-contributors-52da447e
fastapi-people-sponsors-fc0e0b1d
fastapi-topic-repos-40f04115
feature/python-tests-t
fix-broken-links-in-index.md
fix-grammar-and-typos
fix-multiple-upload-file-in-swagger
fix-nested-annotated-types-in-field_annotation_is_scalar_sequence
fix-on_startup-parameter-to-app
fix-response_model_---parameters-with-Iterable
llm-prompt-tr
master
pin-actions-by-sha
pre-commit-ci-update-config
refactor-include-router-1
translate-de-add-missing-3f9149da
translate-de-update-outdated-d0578ef2
translate-es-add-missing-383d2b2a
translate-fr-add-missing-1e3f6254
translate-fr-update-outdated-78abe3ae
translate-ja-add-missing-4420c861
translate-ko-add-missing-2ec5599d
translate-pt-add-missing-f27acfbd
translate-ru-add-missing-d209aaf8
translate-tr-add-missing-5286437a
translate-uk-add-missing-25a3038f
translate-uk-add-missing-5d45eb9e
translate-zh-add-missing-6eac157d
translate-zh-hant-add-missing-2ac5aaff
translation-workflow
0.1.11
0.1.12
0.1.13
0.1.14
0.1.15
0.1.17
0.1.19
0.10.0
0.10.1
0.10.2
0.10.3
0.100.0
0.100.0-beta1
0.100.0-beta2
0.100.0-beta3
0.100.1
0.101.0
0.101.1
0.102.0
0.103.0
0.103.1
0.103.2
0.104.0
0.104.1
0.105.0
0.106.0
0.107.0
0.108.0
0.109.0
0.109.1
0.109.2
0.11.0
0.110.0
0.110.1
0.110.2
0.110.3
0.111.0
0.111.1
0.112.0
0.112.1
0.112.2
0.112.3
0.112.4
0.113.0
0.114.0
0.114.1
0.114.2
0.115.0
0.115.1
0.115.10
0.115.11
0.115.12
0.115.13
0.115.14
0.115.2
0.115.3
0.115.4
0.115.5
0.115.6
0.115.7
0.115.8
0.115.9
0.116.0
0.116.1
0.116.2
0.117.0
0.117.1
0.118.0
0.118.1
0.118.2
0.118.3
0.119.0
0.119.1
0.12.0
0.12.1
0.120.0
0.120.1
0.120.2
0.120.3
0.120.4
0.121.0
0.121.1
0.121.2
0.121.3
0.122.0
0.122.1
0.123.0
0.123.1
0.123.10
0.123.2
0.123.3
0.123.4
0.123.5
0.123.6
0.123.7
0.123.8
0.123.9
0.124.0
0.124.1
0.124.2
0.124.3
0.124.4
0.125.0
0.126.0
0.127.0
0.127.1
0.128.0
0.128.1
0.128.2
0.128.3
0.128.4
0.128.5
0.128.6
0.128.7
0.128.8
0.129.0
0.129.1
0.129.2
0.13.0
0.130.0
0.131.0
0.132.0
0.132.1
0.133.0
0.133.1
0.134.0
0.135.0
0.135.1
0.135.2
0.135.3
0.135.4
0.136.0
0.136.1
0.136.2
0.136.3
0.14.0
0.15.0
0.16.0
0.17.0
0.18.0
0.19.0
0.2.0
0.2.1
0.20.0
0.20.1
0.21.0
0.22.0
0.23.0
0.24.0
0.25.0
0.26.0
0.27.0
0.27.1
0.27.2
0.28.0
0.29.0
0.29.1
0.3.0
0.30.0
0.30.1
0.31.0
0.32.0
0.33.0
0.34.0
0.35.0
0.36.0
0.37.0
0.38.0
0.38.1
0.39.0
0.4.0
0.40.0
0.41.0
0.42.0
0.43.0
0.44.0
0.44.1
0.45.0
0.46.0
0.47.0
0.47.1
0.48.0
0.49.0
0.49.1
0.49.2
0.5.0
0.5.1
0.50.0
0.51.0
0.52.0
0.53.0
0.53.1
0.53.2
0.54.0
0.54.1
0.54.2
0.55.0
0.55.1
0.56.0
0.56.1
0.57.0
0.58.0
0.58.1
0.59.0
0.6.0
0.6.1
0.6.2
0.6.3
0.6.4
0.60.0
0.60.1
0.60.2
0.61.0
0.61.1
0.61.2
0.62.0
0.63.0
0.64.0
0.65.0
0.65.1
0.65.2
0.65.3
0.66.0
0.66.1
0.67.0
0.68.0
0.68.1
0.68.2
0.69.0
0.7.0
0.7.1
0.70.0
0.70.1
0.71.0
0.72.0
0.73.0
0.74.0
0.74.1
0.75.0
0.75.1
0.75.2
0.76.0
0.77.0
0.77.1
0.78.0
0.79.0
0.79.1
0.8.0
0.80.0
0.81.0
0.82.0
0.83.0
0.84.0
0.85.0
0.85.1
0.85.2
0.86.0
0.87.0
0.88.0
0.89.0
0.89.1
0.9.0
0.9.1
0.90.0
0.90.1
0.91.0
0.92.0
0.93.0
0.94.0
0.94.1
0.95.0
0.95.1
0.95.2
0.96.0
0.96.1
0.97.0
0.98.0
0.99.0
0.99.1
v0.1.16
${ noResults }
tiangolo.fastapi/docs/zh/docs/advanced/testing-dependencies.md
1.9 KiB
1.9 KiB
测试依赖项
测试时覆盖依赖项
有些场景下,您可能需要在测试时覆盖依赖项。
即不希望运行原有依赖项(及其子依赖项)。
反之,要在测试期间(或只是为某些特定测试)提供只用于测试的依赖项,并使用此依赖项的值替换原有依赖项的值。
用例:外部服务
常见实例是调用外部第三方身份验证应用。
向第三方应用发送令牌,然后返回经验证的用户。
但第三方服务商处理每次请求都可能会收费,并且耗时通常也比调用写死的模拟测试用户更长。
一般只要测试一次外部验证应用就够了,不必每次测试都去调用。
此时,最好覆盖调用外部验证应用的依赖项,使用返回模拟测试用户的自定义依赖项就可以了。
使用 app.dependency_overrides 属性
对于这些用例,FastAPI 应用支持 app.dependency_overrides 属性,该属性就是字典。
要在测试时覆盖原有依赖项,这个字典的键应当是原依赖项(函数),值是覆盖依赖项(另一个函数)。
这样一来,FastAPI 就会调用覆盖依赖项,不再调用原依赖项。
{* ../../docs_src/dependency_testing/tutorial001_an_py310.py hl[26:27,30] *}
/// tip | 提示
FastAPI 应用中的任何位置都可以实现覆盖依赖项。
原依赖项可用于路径操作函数、路径操作装饰器(不需要返回值时)、.include_router() 调用等。
FastAPI 可以覆盖这些位置的依赖项。
///
然后,使用 app.dependency_overrides 把覆盖依赖项重置为空字典:
app.dependency_overrides = {}
/// tip | 提示
如果只在某些测试时覆盖依赖项,您可以在测试开始时(在测试函数内)设置覆盖依赖项,并在结束时(在测试函数结尾)重置覆盖依赖项。
///