Files
order/.venv/Lib/site-packages/flask/__pycache__/testing.cpython-312.pyc

127 lines
12 KiB
Plaintext
Raw Normal View History

2025-08-27 21:11:48 +08:00
<EFBFBD>
x<>g<EFBFBD>'<00><00><><00>dZddlZddlmZddlZddlmZddlmZddl m
Z
ddl m Z dd l mZdd
lmZGd <0B>d ej$j&<00>Zd <0A>ZGd<0E>de<08>ZGd<10>de<07>Zy)z<>
flask.testing
~~~~~~~~~~~~~
Implements test support helpers. This module is lazily imported
and usually not used in production environments.
:copyright: 2010 Pallets
:license: BSD-3-Clause
<EFBFBD>N)<01>contextmanager)<01> CliRunner)<01>Client)<01> url_parse<73>)<01>_request_ctx_stack)<01>
ScriptInfo)<01>dumpsc<00>2<00><00>eZdZdZ d<04>fd<02> Zd<03>Z<05>xZS)<05>EnvironBuildera<72>An :class:`~werkzeug.test.EnvironBuilder`, that takes defaults from the
application.
:param app: The Flask application to configure the environment from.
:param path: URL path being requested.
:param base_url: Base URL where the app is being served, which
``path`` is relative to. If not given, built from
:data:`PREFERRED_URL_SCHEME`, ``subdomain``,
:data:`SERVER_NAME`, and :data:`APPLICATION_ROOT`.
:param subdomain: Subdomain name to append to :data:`SERVER_NAME`.
:param url_scheme: Scheme to use instead of
:data:`PREFERRED_URL_SCHEME`.
:param json: If given, this is serialized as JSON and passed as
``data``. Also defaults ``content_type`` to
``application/json``.
:param args: other positional arguments passed to
:class:`~werkzeug.test.EnvironBuilder`.
:param kwargs: other keyword arguments passed to
:class:`~werkzeug.test.EnvironBuilder`.
c<00>T<00><01>|s|s|r|dut|xs|<05>k7sJd<01><00>|<03><>|jjd<02>xsd}|jd} |rdj||<08>}|<05>|jd}t |<02>}
dj|
j
xs||
j xs|| jd<08><00> <09>}|
j}|
jr0t|
jt<00>rd
nd } || |
jzz }||_ tt|<00>>||g|<06><01>i|<07><01>y) Nz8Cannot pass "subdomain" or "url_scheme" with "base_url".<2E> SERVER_NAME<4D> localhost<73>APPLICATION_ROOTz{0}.{1}<7D>PREFERRED_URL_SCHEMEz{scheme}://{netloc}/{path}<7D>/)<03>scheme<6D>netloc<6F>path<74>?<3F>?)<10>bool<6F>config<69>get<65>formatrrr<00>lstripr<00>query<72>
isinstance<EFBFBD>bytes<65>app<70>superr <00>__init__) <0A>selfr r<00>base_url<72> subdomain<69>
url_scheme<EFBFBD>args<67>kwargs<67> http_host<73>app_root<6F>url<72>sep<65> __class__s <20><>6D:\mooc\order\.venv\Lib\site-packages\flask/testing.pyr"zEnvironBuilder.__init__/s4<00><><00><1D> <09>Z<EFBFBD> <14>D<EFBFBD> <20> <11> <15> #<23><1A>
<EFBFBD>=
<EFBFBD> F<01> F<01>  F<01>
<EFBFBD> <14> <1B><1B>
<EFBFBD>
<EFBFBD><0E><0E>}<7D>5<>D<><1B>I<EFBFBD><1A>z<EFBFBD>z<EFBFBD>"4<>5<>H<EFBFBD><18>%<25>,<2C>,<2C>Y<EFBFBD> <09>B<> <09><19>!<21> <20>Z<EFBFBD>Z<EFBFBD>(><3E>?<3F>
<EFBFBD><1B>D<EFBFBD>/<2F>C<EFBFBD>3<>:<3A>:<3A><1A>z<EFBFBD>z<EFBFBD>/<2F>Z<EFBFBD><1A>z<EFBFBD>z<EFBFBD>.<2E>Y<EFBFBD><1D>_<EFBFBD>_<EFBFBD>S<EFBFBD>)<29>;<3B><0E>H<EFBFBD>
<17>8<EFBFBD>8<EFBFBD>D<EFBFBD><12>y<EFBFBD>y<EFBFBD>(<28><13><19><19>E<EFBFBD>:<3A>d<EFBFBD><03><03><14><03>c<EFBFBD>i<EFBFBD>i<EFBFBD><0F>'<27><04><16><04><08> <0A>n<EFBFBD>d<EFBFBD>,<2C>T<EFBFBD>8<EFBFBD>M<>d<EFBFBD>M<>f<EFBFBD>M<>c <00>R<00>|jd|j<00>t|fi|<02><01>S)z<>Serialize ``obj`` to a JSON-formatted string.
The serialization will be configured according to the config associated
with this EnvironBuilder's ``app``.
r )<03>
setdefaultr <00>
json_dumps)r#<00>objr(s r.r2zEnvironBuilder.json_dumpsXs(<00><00> <0F><19><19>%<25><14><18><18>*<2A><19>#<23>(<28><16>(<28>(r/)rNNN)<07>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r"r2<00> __classcell__<5F>r-s@r.r r s"<00><><00><08>0<11><15><16><17> 'N<01>R)r/r c<00>T<00>tjtd<01><00>t|i|<01><01>S)z<>Create a :class:`flask.testing.EnvironBuilder`.
.. deprecated: 1.1
Will be removed in 1.2. Construct ``flask.testing.EnvironBuilder``
directly instead.
z<>"make_test_environ_builder()" is deprecated and will be removed in 1.2. Construct "flask.testing.EnvironBuilder" directly instead.)<04>warnings<67>warn<72>DeprecationWarningr )r'r(s r.<00>make_test_environ_builderr>bs/<00><00> <0A>M<EFBFBD>M<EFBFBD><1A> <17>
<EFBFBD><06> <1A>4<EFBFBD> *<2A>6<EFBFBD> *<2A>*r/c<00>H<00><00>eZdZdZdZ<04>fd<03>Zed<04><00>Zd<05>Zd<06>Z d<07>Z
<EFBFBD>xZ S)<08> FlaskClientaDWorks like a regular Werkzeug test client but has some knowledge about
how Flask works to defer the cleanup of the request context stack to the
end of a ``with`` body when used in a ``with`` statement. For general
information about how to use this class refer to
:class:`werkzeug.test.Client`.
.. versionchanged:: 0.12
`app.test_client()` includes preset default environment, which can be
set after instantiation of the `app.test_client()` object in
`client.environ_base`.
Basic usage is outlined in the :ref:`testing` chapter.
Fc<00>b<00><01>tt|<00>
|i|<02><01>ddtjzd<03>|_y)Nz 127.0.0.1z werkzeug/)<02> REMOTE_ADDR<44>HTTP_USER_AGENT)r!r@r"<00>werkzeug<75> __version__<5F> environ_base)r#r'r(r-s <20>r.r"zFlaskClient.__init__<5F>s2<00><><00> <0A>k<EFBFBD>4<EFBFBD>)<29>4<EFBFBD>:<3A>6<EFBFBD>:<3A>&<26>*<2A>X<EFBFBD>-A<>-A<>A<>
<EFBFBD><04>r/c/<00>$K<00>|j<00> td<02><00>|j}|jdi<00>}|jj |<04>t
j }|j|i|<02><01>5}|j}|j||j<00>}|<08> td<04><00>t j|<05> |<08><03>t j<00>|j<00>} |j|<08>s|j||| <09>| j!|jj"<00>}
|jj%|jj"|
<EFBFBD>ddd<01>y#t j<00>wxYw#1swYyxYw<01>w)a<>When used in combination with a ``with`` statement this opens a
session transaction. This can be used to modify the session that
the test client uses. Once the ``with`` block is left the session is
stored back.
::
with client.session_transaction() as session:
session['value'] = 42
Internally this is implemented by going through a temporary test
request context and since session handling could depend on
request variables this function accepts the same arguments as
:meth:`~flask.Flask.test_request_context` which are directly
passed through.
Nz:Session transactions only make sense with cookies enabled.<2E>environ_overridesz?Session backend did not open a session. Check the configuration)<13>
cookie_jar<EFBFBD> RuntimeError<6F> applicationr1<00> inject_wsgir<00>top<6F>test_request_context<78>session_interface<63> open_session<6F>request<73>push<73>pop<6F>response_class<73>is_null_session<6F> save_session<6F>get_wsgi_headers<72>environ<6F> extract_wsgi) r#r'r(r rH<00> outer_reqctx<74>crO<00>sess<73>resp<73>headerss r.<00>session_transactionzFlaskClient.session_transaction<6F>s[<00><00><><00>$ <10>?<3F>?<3F> "<22><1E>L<><0E> <0E><13><1E><1E><03>"<22>-<2D>-<2D>.A<>2<EFBFBD>F<><19> <0C><0F><0F>#<23>#<23>$5<>6<>)<29>-<2D>-<2D> <0C> %<25>S<EFBFBD> %<25> %<25>t<EFBFBD> 6<>v<EFBFBD> 6<>!<21> #<23> 5<> 5<> <1D>$<24>1<>1<>#<23>q<EFBFBD>y<EFBFBD>y<EFBFBD>A<>D<EFBFBD><13>|<7C>"<22>U<><12><12> <1F> #<23> #<23>L<EFBFBD> 1<> )<29><1A>
<EFBFBD>"<22>&<26>&<26>(<28><16>%<25>%<25>'<27>D<EFBFBD>$<24>4<>4<>T<EFBFBD>:<3A>!<21>.<2E>.<2E>s<EFBFBD>D<EFBFBD>$<24>?<3F><1A>+<2B>+<2B>A<EFBFBD>I<EFBFBD>I<EFBFBD>,=<3D>,=<3D>><3E>G<EFBFBD> <10>O<EFBFBD>O<EFBFBD> (<28> (<28><11><19><19>):<3A>):<3A>G<EFBFBD> D<>37<> 6<><36>&#<23>&<26>&<26>(<28><>'7<> 6<>s8<00>A3F<01>5A F<03>E+<02>BF<03>" F<01>+F<05>F<03>F <07> Fc<00>@<00>|jdd<02>}|jdd<02>}|jdd<02>}|s<>t|<01>dk(r<>t|dtjj
t f<02>r<>|jj<00>}t|dtjj
<00>r#|j|dj<00><00>n|j|d<00>|j|d<nu|j|jdi<00>d<|jd |j<00>t |jg|<01><01>i|<02><01>} |j<00>}|j<00>tj |||||<05>
<EFBFBD>S#|j<00>wxYw) N<>as_tupleF<65>buffered<65>follow_redirectsrrzflask._preserve_contextrHrF)rarbrc)rS<00>lenrrD<00>testr <00>dictrF<00>copy<70>update<74> get_environ<6F>preserve_contextr1rK<00>closer<00>open)r#r'r(rarbrcrX<00>builders r.rlzFlaskClient.open<65>sh<00><00><19>:<3A>:<3A>j<EFBFBD>%<25>0<><08><19>:<3A>:<3A>j<EFBFBD>%<25>0<><08>!<21>:<3A>:<3A>&8<>%<25>@<40><18><17><13>D<EFBFBD> <09>Q<EFBFBD><0E><1A>4<EFBFBD><01>7<EFBFBD>X<EFBFBD>]<5D>]<5D>%A<>%A<>4<EFBFBD>$H<>I<><1A>'<27>'<27>,<2C>,<2C>.<2E>G<EFBFBD><19>$<24>q<EFBFBD>'<27>8<EFBFBD>=<3D>=<3D>#?<3F>#?<3F>@<40><17><0E><0E>t<EFBFBD>A<EFBFBD>w<EFBFBD>2<>2<>4<>5<><17><0E><0E>t<EFBFBD>A<EFBFBD>w<EFBFBD>'<27>15<31>1F<31>1F<31>G<EFBFBD>-<2D> .<2E><15>%<25>%<25> <13> <1D> <1D>1<>2<EFBFBD> 6<>)<29> <0E> <13> <1D> <1D>n<EFBFBD>d<EFBFBD>.?<3F>.?<3F> @<40>$<24>T<EFBFBD>%5<>%5<>G<><04>G<><06>G<>G<EFBFBD> <20>!<21>-<2D>-<2D>/<2F><07><17> <0A> <0A><0F><15>{<7B>{<7B> <10> <13><1D><1D>-<2D> 
<EFBFBD>
<EFBFBD><EFBFBD><18> <0A> <0A><0F>s <00>F <00> Fc<00>B<00>|jr td<01><00>d|_|S)NzCannot nest client invocationsT)rjrJ<00>r#s r.<00> __enter__zFlaskClient.__enter__<5F>s$<00><00> <0F> <20> <20><1E>?<3F>@<40> @<40> $<24><04><1D><13> r/c<00>t<00>d|_ tj}|<04>|jr|j <00>ny<00>1)NF)rjrrM<00> preservedrS)r#<00>exc_type<70> exc_value<75>tbrMs r.<00>__exit__zFlaskClient.__exit__<5F>s6<00><00> %<25><04><1D> <13>$<24>(<28>(<28>C<EFBFBD><12><EFBFBD>3<EFBFBD>=<3D>=<3D><13><07><07> <09><15> r/) r4r5r6r7rjr"rr_rlrprvr8r9s@r.r@r@ss<<00><><00> <08><1D><14>
<EFBFBD><14>2E<01><14>2E<01>h$
<EFBFBD>L<14> r/r@c<00>.<00><00>eZdZdZ<03>fd<02>Zd<04>fd<03> Z<05>xZS)<05>FlaskCliRunnerz<72>A :class:`~click.testing.CliRunner` for testing a Flask app's
CLI commands. Typically created using
:meth:`~flask.Flask.test_cli_runner`. See :ref:`testing-cli`.
c <00>:<00><01>||_tt|<00>di|<02><01>y)N<>)r r!rxr")r#r r(r-s <20>r.r"zFlaskCliRunner.__init__s<00><><00><16><04><08> <0A>n<EFBFBD>d<EFBFBD>,<2C>6<>v<EFBFBD>6r/c <00><><00><01><00>|<01><16>jj}d|vrt<00>fd<02><08><03>|d<tt<00><00>||fi|<03><01>S)acInvokes a CLI command in an isolated environment. See
:meth:`CliRunner.invoke <click.testing.CliRunner.invoke>` for
full method documentation. See :ref:`testing-cli` for examples.
If the ``obj`` argument is not given, passes an instance of
:class:`~flask.cli.ScriptInfo` that knows how to load the Flask
app being tested.
:param cli: Command object to invoke. Default is the app's
:attr:`~flask.app.Flask.cli` group.
:param args: List of strings to invoke the command with.
:return: a :class:`~click.testing.Result` object.
r3c<00><00><01><00>jS)N)r ros<00>r.<00><lambda>z'FlaskCliRunner.invoke.<locals>.<lambda>s <00><><00>$<24>(<28>(r/)<01>
create_app)r <00>clir r!rx<00>invoke)r#rr'r(r-s` <20>r.r<>zFlaskCliRunner.invokesG<00><><00> <0F>;<3B><16>(<28>(<28>,<2C>,<2C>C<EFBFBD> <10><06> <1E>&<26>2B<32>C<>F<EFBFBD>5<EFBFBD>M<EFBFBD><14>^<5E>T<EFBFBD>1<>#<23>t<EFBFBD>F<>v<EFBFBD>F<>Fr/)NN)r4r5r6r7r"r<>r8r9s@r.rxrx<00>s<00><><00><08>
7<>G<01>Gr/rx)r7r;<00>
contextlibr<00> werkzeug.testrD<00> click.testingrr<00> werkzeug.urlsr<00>rrr <00>jsonr
r2rer r>r@rxrzr/r.<00><module>r<>sb<00><01> <04><10>%<25><14>#<23> <20>#<23> <20><1B>%<25>F)<29>X<EFBFBD>]<5D>]<5D>1<>1<>F)<29>R+<2B>"F<16>&<26>F<16>RG<01>Y<EFBFBD>Gr/