我正在尝试获取正在测试时正在下载的文件的文件名。我已经参考了this,但是没有得到解决方案。我在测试方面是个新手。谁能帮我在单元测试中获取正在下载的文件名的名称?提前感谢
test.py
from django.contrib.auth.models import User
from rest_framework.test import APITestCase, force_authenticate
from rest_framework.authtoken.models import Token
from csv_loader.api.views import UserViewSet
class UserTestCase(APITestCase):
def setUp(self):
self.username = 'testuser1'
self.email = 'testuser1@gmail.com'
self.password = '!superuser'
self.superuser = User.objects.create_user(username='superuser', email='uid.sawyer@gmail.com',
password='superuser',
is_staff=True)
self.token = Token.objects.get(user=self.superuser)
def test_superuser_file_download(self):
user = User.objects.get(username='superuser')
view = UserViewSet.as_view({'get': 'list'})
request = self.factory.get('/api/users/user_download/')
force_authenticate(request, user, token=self.token)
response = view(request)
self.assertEquals(
response.get('Content-Disposition'),
"attachment; filename=users.csv"
)
)Views.py
class UserViewSet(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [IsOwnerOrAdmin, ]
@action(detail=False, methods=["get"], permission_classes=[IsAdmin, ])
def user_download(self, request):
users = User.objects.all()
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="users.csv"'
writer = csv.writer(response, delimiter=',')
writer.writerow(['username', 'email'])
for user in users:
writer.writerow([user.username, user.email])
return responseserializers.py
class FileUploadSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = FileUpload
fields = ('created', 'datafile')错误
======================================================================
FAIL: test_superuser_file_download (csv_loader.tests.tests.UserTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/username/Desktop/CSV/Tasks/Docker/csv-loader/csv_loader/tests/tests.py", line 245, in test_superuser_file_download
"attachment; filename=users.csv"
AssertionError: None != 'attachment; filename=users.csv'
----------------------------------------------------------------------
Ran 1 test in 0.208s
FAILED (failures=1)
Destroying test database for alias 'default'...发布于 2019-09-02 23:20:31
为了访问Content-Disposition,您需要访问响应headers -例如,您可以通过request.META.get('HTTP_CONTENT_DISPOSITION')实现这一点。
https://stackoverflow.com/questions/57753988
复制相似问题