關於測試

測試用例html

import datetime

from django.test import TestCase
from django.utils import timezone

from .models import Question

class QuestionModelTests(TestCase):

    def test_was_published_recently_with_future_question(self):
        """
        was_published_recently() returns False for questions whose pub_date
        is in the future.
        """
        time = timezone.now() + datetime.timedelta(days=30)
        future_question = Question(pub_date=time)
        self.assertIs(future_question.was_published_recently(), False)

執行python manage.py test polls,會進行以下操做
    1 尋找 polls應用裏的測試代碼
    2 找django.test.TestCase 的子類,如QuestionModelTests
    3 建立一個特殊的數據庫供測試使用,如,建立future_question,並非在用戶數據庫建立,而是在一個測試數據庫建立的
    4 在類中尋找測試方法—以 test 開頭的方法
    5 使用assertls()方法,確認函數是否返回指望值python

 

Clientshell

  Django 提供了一個供測試使用的 Client 來模擬用戶和視圖層代碼的交互數據庫

       python shell UIdjango

    from django.test import Client
    from django.urls import reverse
    client = Client()
    response = client.get('/')
    response.status_code
    
    response = client.get(reverse('polls:index'))  #請求應用polls的視圖index
    response.status_code  #輸出:200
    response.content  #輸出:index視圖對應html的內容
    response.context['latest_question_list']  #輸出:<QuerySet [<Question: What's up?>]>

 

關於測試例
  先寫代碼或先寫測試用例,可根據實際狀況來決定
  每增長一項功能,都要追加相應的測試用例,而且測試用例越多越好
  測試例過多,可能會失去控制,可在總體進行規劃,可參考如下原則:
  對於每一個模型和視圖都創建單獨的TestClass
  每一個測試方法只測試一個功能
  給每一個測試方法起個能描述其功能的名字

  當寫完測試用例並經過後,可將其永遠保留
  由於該測試用例的做用,實際上就是在監控對應的代碼
  好比,未來修改其餘代碼時,可能無心間形成這段代碼沒有返回指望值
  則在修改後執行測試用例時,就會發現該bug

Selenium
  Selenium是一款瀏覽器自動化測試工具
  它僞裝成是瀏覽器正在和站點進行交互,就像真人在訪問網站同樣
  Django提供了LiveServerTestCase與Selenium這樣的工具進行交互瀏覽器

代碼覆蓋率
  找出代碼中未被測試部分的方法是檢查代碼覆蓋率
  它有助於找出代碼中的薄弱部分和無用部分
  若是沒法測試一段代碼,一般說明這段代碼須要被重構或者刪除服務器

持續集成
  對源代碼進行自動化編譯、測試、代碼檢查,以及打包程序、部署(發佈)到應用服務器上函數

相關文章
相關標籤/搜索