vas*_*ek1 14 python django unit-testing
我认为我有以下逻辑:
def view_function(request):
if request.method == 'POST':
uploadform = UploadFileForm(request.POST, request.FILES)
if uploadform.is_valid():
#do stuff
Run Code Online (Sandbox Code Playgroud)
UploadFileForm等于的位置:
class UploadFileForm(forms.Form):
file = forms.FileField()
Run Code Online (Sandbox Code Playgroud)
我正在尝试为此视图编写单元测试.查看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
Run Code Online (Sandbox Code Playgroud)
我的目标是让uploadform.is_valid()评估为True,这样我就可以测试表单验证之后的代码.当我运行上面的测试时,uploadform.is_valid()的计算结果为False.有什么我想念的吗?我的测试中的代码是将文件添加到request.FILES,还是在做其他事情?
rad*_*rba 37
django的测试工具的方式是:
from django.core.files.uploadedfile import SimpleUploadedFile
f = SimpleUploadedFile("file.txt", b"file_content")
Run Code Online (Sandbox Code Playgroud)
这样您就不需要创建临时文件并写入它,并且您不需要模拟文件(不像听起来那么简单).
Ala*_*air 18
在文档中,文件字段被调用attachment
,但在你的文件字段中,它被调用file
.
您name
的帖子数据中也不需要- 指的是另一个被调用的字段name
,而不是您要上传的文件的名称.
请尝试以下方法:
def test_stuff(self):
myfile = open('....\file.csv','r')
response = self.client.post('/', {'file':myfile})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12432 次 |
最近记录: |