使用单元测试测试简单的首页
Django鼓勵以應用的形式組織代碼。這樣一個項目中可以放多個應用
為待辦事項清單創建第一個應用:
?manage.py startapp Lists
會在superList文件夾中創建子文件夾Lists,并在lists中創建一些占位文件,用來保存模型,視圖以及測試。
?
功能測試站在用戶的角度從外部測試應用,單元測試站在程序員的角度從內部測試應用。
?
TDD同時使用這兩種類型測試應用,工作流程:
?1.先寫功能測試,從用戶角度描述應用的新功能。
?2. 功能測試失敗后,想辦法編寫代碼讓它通過。(或者至少讓當前失敗的測試通過)。此時,使用一個或多個單元測試定義希望代碼實現的效果。保證為應用中的每一行代碼(至少)編寫一個單元測試。
?3. 單元測試失敗后,編寫最少量的應用代碼,剛好讓單元測試通過。有時要在第2步和第3步之間多次往復,直到我們覺得功能測試有一點進展為止
?4. 再次運行功能測試,看能否通過,或者有沒有一點進展。這一步可能促使我們編寫一些新的單元測試和代碼等。
?
整個過程中,功能測試站在高層驅動開發,而單元測試從底層驅動我們做些什么。
?
功能測試的作用是幫助你開發具有所需功能的應用,還能保證你不會無意中破壞這些功能。單元測試的作用是幫助你編寫簡潔無措的代碼。
?
Django 有自己專用的,寫unit test的類? from django.test import TestCase
?
TDD x循環要從失敗的測試開始,然后編寫代碼讓其通過。
?
Django中的MVC,URL 和視圖函數.
視圖更像是控制器,模板才是視圖。
其主要任務是決定用戶訪問網站中的某個URL時做些什么。
Django 的工作流程:
1. 針對某個URL的HTTP請求進入
?2. Django使用一些規則決定由哪個視圖函數處理這個請求 (這一步叫做 解析URL)
3. 選中的視圖函數處理請求,然后返回HTTP響應。
?
?先測試兩件事:
1. 能否解析網站根路徑 (“/"), 將其對應到我們編寫的某個視圖函數上
???? from django.core.urlresolvers impor resolve
???? found = resolve("/") #解析 url,并將其映射到相應的視圖函數上
???? # TDD 目前沒有響應的視圖函數。根據TDD失敗,在應用的視圖文件中定義視圖函數.
2. 能否讓視圖函數返回一些HTML
??? #TDD 定義的視圖函數要返回 HTML 給request
?
運行測試,根據TDD定義 視圖函數。運行測試,發現404 error.說明 沒有相應的URL映射。
project的文件夾下的urls,py 中定義如何把URL映射到視圖函數上。這個文件應用于整個網站.
?? from django.conf.urls import url,patterns,include
三種加url的例子。Django urls.py 文件中自帶的事例。URL 文件中,每個url 都需要對應的視圖處理函數
? Function views
??? 1. Add an import:? from my_app import views
??? 2. Add a URL to urlpatterns:? url(r'^$', views.home, name='home')
Class-based views
??? 1. Add an import:? from other_app.views import Home
??? 2. Add a URL to urlpatterns:? url(r'^$', Home.as_view(), name='home')
Including another URLconf
??? 1. Import the include() function: from django.conf.urls import url, include
??? 2. Add a URL to urlpatterns:? url(r'^blog/', include('blog.urls'))
?
為視圖編寫測試函數:
? 需要定義一個函數,向瀏覽器返回真正的HTML響應.
? 給視圖函數輸入一個request, 返回response. 然后檢查response.content的內容。對比response.content的內容時,主要使用 b"xxx".因為response.content是原始字節。
??? from django.http import HttpRequest
? 通過單元測試,一步步進行,視圖函數需要返回response object
??? from django.http import HttpResponse
??? def home_page(request):
????????? return HttpResponse(xxx)
?
回顧:
創建新應用 : manage.py startapp appname
Django 單元測試運行程序: from django.test import TestCase
功能測試和單元測試的區別: 用戶和程序員
Django 解析URL 的方法, urls.py 文件的作用. : url(pattern,view,name)
Django 的視圖函數,請求和響應對象。 HttpRequest,HttpResponse
如何返回簡單的HTML??? return HttpResponse(xxx)
?
有用的命令和概念:
?python manage.py runserver
?python functional_test.py 運行功能測試
python manage.py test 運行單元測試
單元測試/編寫代碼 循環:
?? a, 在終端里運行單元測試
??? b,在編輯器中改動最少量的代碼
??? c,重復上兩步
轉載于:https://www.cnblogs.com/ahMay/p/8491329.html
總結
以上是生活随笔為你收集整理的使用单元测试测试简单的首页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端vue框架的跨域处理方法
- 下一篇: 外网如何访问 Service?- 每天5