我打算假設你的意思是自動化測試,而不是僅僅檢查發佈請求是否工作。如果你的意思是後者,只需通過執行請求並在shell或管理員中檢查相關的Foo
和Bar
的值來檢查。
有關發送POST
請求的最佳方法是使用Client
。假設視圖的名稱爲my_view
:
from django.test import Client
from django.urls import reverse
c = Client()
c.post(reverse(`my_view`, data={'fid':43, `bid`:20}
但你仍然需要在數據庫中的一些初始數據,並且您需要檢查是否要作出你所期望的變化被推出的。在這裏,你可以使用一個TestCase
:
from django.test import TestCase, Client
from django.urls import reverse
FooBarTestCase(TestCase):
def setUp(self):
# create some foo and bar data, using foo.objects.create etc
# this will be run in between each test - the database is rolled back in between tests
def test_bar_not_changed(self):
# write a post request which you expect not to change the value
# of a bar instance, then check that the values didn't change
self.assertEqual(bar.value, old_bar.value)
def test_bar_changes(self):
# write a post request which you expect to change the value of
# a bar instance, then assert that it changed as expected
self.assertEqual(foo.value, bar.value)
,我覺得製作設置了一些數據,以執行測試更容易爲FactoryBoy有用的庫。當爲了測試目的而創建Foo
或Bar
的新實例時,它減少了樣板。另一種選擇是編寫燈具,但如果您的模型發生變化,我發現靈活性較差。
我還建議this book如果你想知道更多關於python測試。它是以django爲導向的,但這些原則適用於其他框架和上下文。
編輯:約factoryboy和鏈接添加諮詢預訂
你可以嘗試把「打印」語句之間的代碼,看看是否正確的值保存。也可以使用「過濾」和「更新」方法來更新,而不是使用「get」查詢然後保存(bar.save)。 – badiya