第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用請(qǐng)求-html 在不啟動(dòng)服務(wù)器的情況下測(cè)試 Flask 應(yīng)用

使用請(qǐng)求-html 在不啟動(dòng)服務(wù)器的情況下測(cè)試 Flask 應(yīng)用

回首憶惘然 2022-09-27 16:28:55
我一直在使用 Flask 對(duì)象來(lái)測(cè)試我的 Web 應(yīng)用程序。我使用美麗湯來(lái)解析其中一些調(diào)用的 HTML 輸出。test_client現(xiàn)在我想嘗試請(qǐng)求-html,但我不知道如何使它與Flask測(cè)試客戶端一起工作。這些示例都使用請(qǐng)求包來(lái)獲取響應(yīng),但 Werkzeug 測(cè)試客戶端不會(huì)進(jìn)行實(shí)際的 HTTP 調(diào)用。據(jù)我所知,它設(shè)置了環(huán)境,只是調(diào)用處理程序方法。有沒(méi)有辦法在不運(yùn)行實(shí)際服務(wù)的情況下完成這項(xiàng)工作?
查看完整描述

1 回答

?
慕蓋茨4494581

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊

請(qǐng)求-wsgi 適配器提供了一個(gè)適配器,用于在 URL 上掛載可調(diào)用的 WSGI。您可以使用會(huì)話.mount() 來(lái)掛載適配器,因此對(duì)于請(qǐng)求-html,您將改用并掛載到該適配器。HTMLSession

$ pip install flask requests-wsgi-adapter requests-html

from flask import Flask


app = Flask(__name__)


@app.route("/")

def index():

    return "<p>Hello, World!</p>"

from requests_html import HTMLSession

from wsgiadapter import WSGIAdapter


s = HTMLSession()

s.mount("http://test", WSGIAdapter(app))

r = s.get("http://test/")

assert r.html.find("p")[0].text == "Hello, World!"

使用請(qǐng)求的缺點(diǎn)是,您必須在要向其發(fā)出請(qǐng)求的每個(gè)URL之前添加。Flask 測(cè)試客戶端不需要這樣做。"http://test/"


除了使用請(qǐng)求和請(qǐng)求-html 之外,您還可以告訴 Flask 測(cè)試客戶端返回一個(gè)響應(yīng),該響應(yīng)將為您執(zhí)行美麗蘇美解析。在快速瀏覽了請(qǐng)求-html之后,我仍然更喜歡直接的燒瓶測(cè)試客戶端和美麗湯API。


$ pip install flask beautifulsoup4 lxml

from flask.wrappers import Response

from werkzeug.utils import cached_property


class HTMLResponse(Response):

    @cached_property

    def html(self):

        return BeautifulSoup(self.get_data(), "lxml")


app.response_class = HTMLResponse

c = app.test_client()

r = c.get("/")

assert r.html.p.text == "Hello, World!"

您還應(yīng)該考慮使用 HTTPX 而不是請(qǐng)求。它是一個(gè)現(xiàn)代的,維護(hù)良好的HTTP客戶端庫(kù),與請(qǐng)求共享許多API相似之處。它還具有出色的功能,例如異步,HTTP / 2以及直接調(diào)用WSGI應(yīng)用程序的內(nèi)置功能。


$ pip install flask httpx

c = httpx.Client(app=app, base_url="http://test")

with c:

    r = c.get("/")

    html = BeautifulSoup(r.text)

    assert html.p.text == "Hello, World!"




查看完整回答
反對(duì) 回復(fù) 2022-09-27
  • 1 回答
  • 0 關(guān)注
  • 65 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)