我對Django比較陌生,對撰寫單元測驗也很陌生。我想尋求幫助,但我甚至有點不知從何下手。我正在使用的應用程式允許老師為一個學生分配多項作業。在學生的儀表板上,只有當開始日期<=今天的日期時,作業才會可用。學生應該只看到串列中的第一個作業。
我需要撰寫一個單元測驗來涵蓋這個場景:
我需要撰寫一個單元測驗來涵蓋這個場景。
- 手動分配多個作業給一個學生 。
- 使用用于學生儀表板的相同查詢,以確保回傳的作業只有具有以下特征的作業 開始日期<=今天的日期 。
- 確保學生只看到串列中的第一個作業(具有最早的開始日期) 。
下面我發布了相關的代碼,這些代碼正在提取學生儀表板上的顯示內容。如果需要更多的代碼來幫助我開始處理這個問題,請讓我知道。非常感謝你所提供的任何幫助!
編輯:
<編輯:如果可能的話,我現在只想使用django.test的內置功能
從我的home/views.py檔案中
@login_required
def index(request)。
user_type = request.user.type.text
if user_type == 'Student':
""" 只回傳第一個測驗,所以學生一次只看到一個測驗""。
assignment = Assignment.objects.filter(
student=request.user,
start_date__lte=datetime.date.day()。
completed=False).first()
if(assignment)。
背景關系 = {
'test_pk': assignment.test.pk,
}
else:
背景關系={}。
return render(request, 'home/student.html'/span>, context)
uj5u.com熱心網友回復:
測驗這樣的東西的基本原理大致如下:
手動創建所需的資料。
因此,從為學生創建一些作業物件開始。 運行你的視圖(向你的視圖發送請求,以先前創建的用戶身份登錄)。 檢查回傳的HTML中是否存在所需的結果。
uj5u.com熱心網友回復:
我建議你使用pytest和factoryboy,網上有很多關于Django的使用教程。
對于你的例子,它應該是這樣的 你需要首先啟動會話,我們可以為此創建一個夾具
。import pytest
import factory
@pytest.fixture[/span
def client()。
from django.test.client import Client
return Client(HTTP_USER_AGENT='pytest')
然后我們應該啟動會話,另一個夾具:
@pytest.fixture。
def session(client)。
# 你的自定義會話她: client.
user = #使用工廠的用戶。
client.user = user
#你的默認值為#你的默認值為
# client.GET
# client.POST
# client.META
return client
class AssignmentFactory(factory.django.DjangoModelFactory)。
class Meta:
model = Assignment
django_get_or_create = ('any attribute you like', )
#默認你想在這里創建的屬性。
# 例如
name = "assignment one"/span>
那么測驗可以是這樣的
。
def test_retrieve_assignment_success(session)。
path = reverse("view_name")
assignment = AssignmentFactory()
res = session.get(path=路徑, data={}, follow=False)
json_res = res.json()
assert json_res.get('context') is not None >。
assert assigment.pk == json_res.get('text').get('test_pk')
.
def test_retrieve_assignment_fail(session)。
path = reverse("view_name")
res = session.get(path=路徑, data={}, follow=False)
json_res = res.json()
assert json_res.get('context') is not None >。
assert json_res.get('context') == {}。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/307461.html
標籤:
