Solver: Wacha tuongeze kesi ya mtihani kwanza ili kuthibitisha suala hilo na kufyeka nyingi na uthibitishaji. Wacha tuangalie faili ya jaribio iliyopo kwanza kuona ni wapi tunapaswa kuongeza mtihani wetu. Vipimo vya kusoma/test_requests.py Wacha tuongeze kesi yetu ya mtihani kwenye darasa la TestRequests. Kwanza, wacha tupate eneo zuri karibu na vipimo vingine vinavyohusiana na URL. Kutafuta test_path kamili, wacha tuongeze kesi yetu ya mtihani mara tu baada ya mtihani wa test_path_is_not_double_encoded. IDG Sasa hebu turekebishe njia ya kuandaa_url katika mifano.py ili kuhifadhi milio mingi. Suala linawezekana katika jinsi njia inavyoshughulikiwa kabla ya kupitishwa kwa Urlunparse. IDG kumbuka kuwa null ni chaguo la mtuhumiwa wa alama. Solver: Wacha tuendeshe vipimo ili kuhakikisha mabadiliko yetu kurekebisha suala. Tutatumia PyTest kuendesha kesi yetu mpya ya mtihani. $ Python -m PyTest vipimo/test_requests.py -k test_path_with_multiple_slashes -v ======================= = = usr/mitaa/bin/python cachedir: .pytest_cache mizizi:/repo configfile: pyproject.toml plugins: cov-5.0.0, httpbin-2.1.0 Kukusanya … zilizokusanywa vitu 330/329 vilivyochaguliwa/1 Vipimo/majaribio. py :: testRequests :: test_path_with_multiple_slashes ilishindwa [100%]
=============================== Kushindwa ============== = = = “http://ex samp.com/path/to/to/resource” ombi = ombi.request (“kupata”, url) .prepare ()> ombi la ombi.url == url e AssertionError: Assert ‘http: //examp…Toanuel00Resource ‘==’ http: //examp…/to/resource ‘ee – http://ex samp.com/path/to//resource E? … … = = = = Kwamba mbinu yetu ya uingizwaji ya bure haifanyi kazi kwa usahihi – kaas za Null zinapata URL iliyosimbwa. Wacha tujaribu njia tofauti kwa kutumia alama ya muda mfupi ya URL. IDG tunahitaji kuongeza uingizaji wa RE juu ya faili. Wacha tuangalie uagizaji wa sasa kwanza. Kusoma SRC/Maombi/Models.py naona tunaweza kuongeza Re kwa uagizaji uliopo. Wacha tuiongeze na uagizaji mwingine wa maktaba ya kawaida hapo juu. IDG Sasa wacha tufanye mtihani tena ili kuona ikiwa njia yetu mpya inafanya kazi. $ Python -m PyTest vipimo/test_requests.py -k test_path_with_multiple_slashes -v ======================= = = usr/mitaa/bin/python cachedir: .pytest_cache mizizi:/repo configfile: pyproject.toml plugins: httpbin-2.1.0, cov-5.0.0 Kukusanya … zilizokusanywa vitu 330/329 vilivyochaguliwa/1 Vipimo/majaribio ya majaribio. py :: testRequests :: test_path_with_multiple_slashes ilishindwa [100%]
=============================== Kushindwa ============== = = = “http://ex samp.com/path/to/to/resource”> ombi = maombi.request (“kupata”, url) .prepare () vipimo/test_requests.py: 150: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ src/maombi/modeli.py: 368: Katika jitayarisha self.prepare_url (url, params) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ URL ya HTTP. “” ” #: Kubali vitu ambavyo vina uwasilishaji wa kamba. #: Hatuwezi kupiga simu kwa upofu/kazi za STR #: kwani hii itajumuisha kiashiria cha Bytestring (B ”) #: kwenye Python 3.x. #: https://github.com/psf/requests/pull/2238 ikiwa iSinstance (url, bytes): url = url.decode (“utf8”) mwingine: url = str (url) # Ondoa milango inayoongoza kutoka URL URL = url.lstrip () # usifanye maandalizi yoyote ya URL kwa miradi isiyo ya HTTP kama` mailto`, # `data` nk kufanya kazi karibu na` url_parse`, ambayo # inashughulikia RFC 3986 tu. ikiwa “:” katika URL na sio url.lower (). StartSwith (“http”): self.url = url kurudi # msaada kwa majina ya kikoa cha Unicode na njia. Jaribu: mpango, mwandishi, mwenyeji, bandari, njia, swala, kipande = parse_url (url) isipokuwa eneoParseError kama e: ongeza batili ya (*e.args) ikiwa sio mpango: ongeza missingschema (f “url batili {url! r}: Hakuna mpango uliotolewa. IDNA encoding jina la mwenyeji ikiwa kamba ina herufi # zisizo za ASCII. Hii inaruhusu watumiaji kupata kiotomatiki tabia sahihi ya IDNA #. Kwa kamba zilizo na wahusika wa ASCII tu, tunahitaji pia kuthibitisha # hauanza na kadi ya mwitu[scheme, netloc, path, None, query, fragment]Kabla ya kuruhusu jina la mwenyeji lisilo na msingi. Ikiwa sio unicode_is_ascii (mwenyeji): jaribu: mwenyeji = self._get_idna_encoded_host (mwenyeji) isipokuwa UnicodeError: ongeza batilidurl (“URL ina lebo batili.”) Elif host.startswith ((“*”, “): Kuinua batiliDurl . Vikoa sio URL halali. Ikiwa sio njia: njia = “/” mwingine: # Hifadhi milio mingi mfululizo katika njia ya asili_path = njia = re.sub (“//+”, “/”, njia) # kawaida kwa slashes moja kwa kuweka ikiwa ni (unstance ( params, (str, ka)): params = to_native_string (params) enc_params = self._encode_params (params) ikiwa enc_params: ikiwa swala: swala = f “{swala} urlunparse ( [100%]
)) # Rudisha viboko vingi ikiwa vilikuwepo kwenye njia ya asili ikiwa njia! = “/” Na “asili_path” katika wenyeji (): # Pata sehemu ya njia kwenye URL ya mwisho na ubadilishe> url_parts = orodha (urlparse (url )) E JinaRorr: jina ‘urlparse’ halijafafanuliwa src/maombi/modeli.py: 490: nameError ========================================================= muhtasari wa muhtasari wa mtihani = = = 1 Ah, tunahitaji kutumia urlparse iliyoingizwa. Wacha turekebishe uagizaji na ujaribu mbinu rahisi. IDG Wacha tufanye mtihani tena ili kuona ikiwa njia hii rahisi inafanya kazi. $ Python -m PyTest vipimo/test_requests.py -k test_path_with_multiple_slashes -v ======================= = = usr/mitaa/bin/python cachedir: .pytest_cache mizizi:/repo configfile: pyproject.toml plugins: httpbin-2.1.0, cov-5.0.0 Kukusanya … zilizokusanywa vitu 330/329 vilivyochaguliwa/1 Vipimo/majaribio ya majaribio. py :: testRequests :: test_path_with_multiple_slashes kupitishwa ================== 1 1 iliyopitishwa, 329 iliyochaguliwa katika 0.62s =========== ========== Msimbo wa Kutoka: 0 Mtihani unapita. Suluhisho rahisi hufanya kazi kwa sababu tunaruhusu vifaa vya URL kupita bila kuhalalisha. Wacha tuwasilishe mabadiliko yetu ambayo ni pamoja na: Kuongeza kesi ya jaribio ili kudhibitisha kufyeka nyingi huhifadhiwa kwenye URL na bila uthibitisho uliobadilishwa kuandaa_url ili kuhifadhi muundo halisi wa njia bila kuhalalisha umeongeza maoni yanayoelezea uhifadhi wa mazungumzo mengi ya kumaliza na mwanzilishi mahali fulani Katikati ya kikao kilichoonyeshwa kwenye sehemu iliyopita, utaona kwamba nilisisitiza kitufe cha Kuendelea Kutatua na kumwambia Solver, “Uko kwenye njia sahihi; Tafadhali endelea. ” Nilijiuliza ni kwanini Solver alikuwa amesimama hapa kungojea pembejeo ya watumiaji, kwa hivyo nilituma ripoti ya suala na kuuliza, “Je! Kwa nini Solver inasimama baada ya kutambua shida? Ndio, iliendelea wakati nilisisitiza kitufe kinachofaa. Hili ni swali, sio ripoti ya mdudu. “
Leave a Reply