我已經在我看來,以下邏輯如何進行單元測試的POST請求:Django的 - 使用request.FILES
def view_function(request):
if request.method == 'POST':
uploadform = UploadFileForm(request.POST, request.FILES)
if uploadform.is_valid():
#do stuff
凡UploadFileForm等於:
class UploadFileForm(forms.Form):
file = forms.FileField()
我想寫單元測試這個觀點。展望Django文檔,建議的方式是這樣的:
class test_stuffTest(TestCase):
def setUp(self):
self.client = django.test.client.Client()
...
def test_stuff(self):
myfile = open('....\file.csv','r')
response = self.client.post('/', {'name':'file.csv','attachment':myfile})
#check response
我的目標是讓uploadform.is_valid(),以評估爲True,所以我可以測試下面的表單驗證代碼。當我運行上面的測試時,uploadform.is_valid()的計算結果爲False。有什麼我失蹤?我的測試中的代碼是將文件添加到request.FILES中,還是在執行其他操作?
如果您不確定'request.FILES'中的內容,最快的方法是在視圖中添加一條打印語句以查看發生了什麼。 – Alasdair 2012-03-03 20:32:26
嗯我試過,但FILES參數不包含在打印輸出中。有沒有啓用它的設置? – vasek1 2012-03-03 23:35:13