1. 程式人生 > >使用單元測試測試簡單的首頁

使用單元測試測試簡單的首頁

以及 views 訪問 div sed cas import 區別 鼓勵

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,重復上兩步

使用單元測試測試簡單的首頁