最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Django4.0教程:Django4.0 測試工具-測試客戶端

測試客戶端是一個 Python 類,它充當(dāng)虛擬 Web 瀏覽器,允許您測試視圖并以編程方式與 Django 驅(qū)動的應(yīng)用程序交互。

專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)寧強(qiáng)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了數(shù)千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

你可以使用測試客戶端執(zhí)行以下操作:

  • 模擬 URL 上的 ?GET? 和 ?POST?請求并觀察響應(yīng)——從低級 HTTP(結(jié)果頭和狀態(tài)碼)到頁面內(nèi)容,應(yīng)有盡有。
  • 查看重定向鏈(如果有的話),并檢查每個步驟的 URL 和狀態(tài)碼。
  • 測試給定的請求是否由給定的包含某些值以及模板上下文的 Django 模板渲染。

請注意,測試客戶端并不是要取代 ?Selenium? 或其他“瀏覽器內(nèi)”框架。Django 的測試客戶端有不同的側(cè)重點(diǎn)。簡而言之:

  • 使用 Django 的測試客戶端來確定要渲染的模板正確,并且模板已傳遞了正確的上下文數(shù)據(jù)
  • 使用 ?Selenium ?等瀏覽器內(nèi)框架來測試呈現(xiàn)的 HTML 和網(wǎng)頁的行為,即 JavaScript 功能。 Django 還為這些框架提供了特殊支持

一個全面的測試套件應(yīng)該使用這兩種測試類型的組合。

概述和一個簡單的例子

要使用測試客戶端,請實例化 ?django.test.Client? 并檢索網(wǎng)頁:

>>> from django.test import Client
>>> c = Client()
>>> response = c.post('/login/', {'username': 'john', 'password': 'smith'})
>>> response.status_code
200
>>> response = c.get('/customer/details/')
>>> response.content
b'

如本例所示,你可以從 Python 交互式解釋器的會話中實例化 ?Client?。
請注意測試客戶端如何工作的一些重要事項:

  • 測試客戶端不需要運(yùn)行 Web 服務(wù)器。 事實上,它會運(yùn)行得很好,根本沒有運(yùn)行 Web 服務(wù)器! 那是因為它避免了 HTTP 的開銷,直接與 Django 框架打交道。 這有助于使單元測試快速運(yùn)行。
  • 檢索頁面時,請記住指定 URL 的 路徑,而不是整個域。例如,這是正確的:
>>> c.get('/login/')

這是錯誤的:

>>> c.get('https://www.example.com/login/')

測試客戶端無法檢索不是由您的 Django 項目提供支持的網(wǎng)頁。 如果您需要檢索其他網(wǎng)頁,請使用 Python 標(biāo)準(zhǔn)庫模塊,例如 ?urllib?。

  • 為了解析 URL,測試客戶端使用你的 ?ROOT_URLCONF ?設(shè)置指向的任何 ?URLconf?。
  • 盡管上面的示例可以在 Python 交互式解釋器中運(yùn)行,但測試客戶端的某些功能,尤其是與模板相關(guān)的功能,僅在測試運(yùn)行時才可用。這樣做的原因是 Django 的測試運(yùn)行器執(zhí)行了一些黑魔法,以確定給定視圖加載了哪個模板。 這種黑魔法(本質(zhì)上是在內(nèi)存中修補(bǔ) Django 的模板系統(tǒng))僅在測試運(yùn)行期間發(fā)生。
  • 默認(rèn)情況下,測試客戶端將禁用您的站點(diǎn)執(zhí)行的任何 CSRF 檢查。如果出于某種原因,您希望測試客戶端執(zhí)行 CSRF 檢查,您可以創(chuàng)建一個強(qiáng)制執(zhí)行 CSRF 檢查的測試客戶端實例。 為此,請在構(gòu)建客戶端時傳入 ?enforce_csrf_checks ?參數(shù):
>>> from django.test import Client
>>> csrf_client = Client(enforce_csrf_checks=True)

發(fā)出請求

使用 ?django.test.Client? 類發(fā)出請求。

class Client(enforce_csrf_checks=False, json_encoder=DjangoJSONEncoder, **defaults)

它在構(gòu)造時不需要任何參數(shù)。然而,你可以使用關(guān)鍵字參數(shù)來指定一些默認(rèn)頭信息。例如,這將在每個請求中發(fā)送一個 ?User-Agent? HTTP 頭:

>>> c = Client(HTTP_USER_AGENT='Mozilla/5.0')

傳遞給 ?get()?、?post()? 等方法的 ?extra? 關(guān)鍵字參數(shù)的值,優(yōu)先于傳遞給類構(gòu)造函數(shù)的默認(rèn)值。
?enforce_csrf_checks?參數(shù)可用于測試 CSRF 保護(hù)。
?json_encoder?參數(shù)允許為 ?post()? 中描述的 JSON 序列化設(shè)置一個自定義 JSON 編碼器。
?raise_request_exception?參數(shù)允許控制是否在請求過程中引出的異常也應(yīng)該在測試中引出。默認(rèn)值為 ?True?。
一旦有了 Client 實例,就可以調(diào)用以下任何一種方法:

get(path, data=None, follow=False, secure=False, **extra)

對提供的 ?path?上發(fā)出 ?GET?請求,并返回一個 ?Response?對象,如下所述。
?data?字典中的鍵值對用于創(chuàng)建 ?GET?數(shù)據(jù)有效載荷。例如:

>>> c = Client()
>>> c.get('/customers/details/', {'name': 'fred', 'age': 7})

產(chǎn)生等效的 GET 請求:

/customers/details/?name=fred&age=7

?extra?關(guān)鍵詞參數(shù)可以用來指定請求中要發(fā)送的頭信息。例如:

>>> c = Client()
>>> c.get('/customers/details/', {'name': 'fred', 'age': 7},
...       HTTP_ACCEPT='application/json')

將 HTTP 頭 ?HTTP_ACCEPT?發(fā)送到 ?detail?視圖,這是測試使用 ?django.http.HttpRequest.accepts()? 方法的代碼路徑的好方法。

如果你已經(jīng)有了 URL 編碼形式的 ?GET?參數(shù),你可以使用該編碼代替使用數(shù)據(jù)參數(shù)。例如,之前的 ?GET?請求也可以改成:

>>> c = Client()
>>> c.get('/customers/details/?name=fred&age=7')

如果你提供的 URL 同時包含編碼的 ?GET?數(shù)據(jù)和數(shù)據(jù)參數(shù),數(shù)據(jù)參數(shù)將優(yōu)先。
如果將 ?follow?設(shè)置為 ?True?,客戶端將遵循所有重定向,并且將在響應(yīng)對象中設(shè)置 ?redirect_chain?屬性,該屬性是包含中間 URL 和狀態(tài)碼的元組。
如果你有一個 URL ?/redirect_me/?,重定向到? /next/?,再重定向到 ?/final/?,這是你會看到的:

>>> response = c.get('/redirect_me/', follow=True)
>>> response.redirect_chain
[('http://testserver/next/', 302), ('http://testserver/final/', 302)]

如果你把 ?secure?設(shè)置為 ?True?,則客戶端將模擬 HTTPS 請求。

post(path, data=None, content_type=MULTIPART_CONTENT, follow=False, secure=False, **extra)

在提供的 ?path?上發(fā)出一個 ?POST?請求,并返回一個 ?Response?對象,如下所述。
?data?字典中的鍵值對用于提交 ?POST?數(shù)據(jù)。例如:

>>> c = Client()
>>> c.post('/login/', {'name': 'fred', 'passwd': 'secret'})

這將產(chǎn)生對這個 URL 的 ?POST?請求:

/login/

且具有此 ?POST?數(shù)據(jù):

name=fred&passwd=secret

如果你提供 ?application/json? 為 ?content_type?,則如果 ?data?是一個字典、列表或元組時,使用 ?json.dumps()? 進(jìn)行序列化。序列化默認(rèn)是通過 ?DjangoJSONEncoder?,可以通過為 Client 提供 ?json_encoder?參數(shù)覆蓋。這個序列化也會發(fā)生在 ?put()?、?patch()? 和 ?delete()? 請求中。
如果你要提供任何其他的 ?content_type?(例如 ?text/xml? 用于 XML 有效載荷),使用HTTP ?Content-Type? 頭中的 ?content_type?,?data?的內(nèi)容在 ?POST?請求中按原樣發(fā)送。
如果你沒有為 ?content_type?提供一個值,data 中的值將以 ?multipart/form-data? 的內(nèi)容類型進(jìn)行傳輸。在這種情況下,data 中的鍵值對將被編碼為多部分消息,并用于創(chuàng)建 ?POST?數(shù)據(jù)有效載荷。
要為一個給定的鍵提交多個值——例如,要指定 ?

        • <cite id="meyis"></cite>
          <tfoot id="meyis"><center id="meyis"></center></tfoot>
          <strike id="meyis"></strike>
            <li id="meyis"><source id="meyis"></source></li>