首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >附件:AssertionError !=‘附件;filename=filename.extension’

附件:AssertionError !=‘附件;filename=filename.extension’
EN

Stack Overflow用户
提问于 2019-09-02 16:51:17
回答 1查看 37关注 0票数 0

我正在尝试获取正在测试时正在下载的文件的文件名。我已经参考了this,但是没有得到解决方案。我在测试方面是个新手。谁能帮我在单元测试中获取正在下载的文件名的名称?提前感谢

test.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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 response

serializers.py

代码语言:javascript
复制
class FileUploadSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = FileUpload
        fields = ('created', 'datafile')

错误

代码语言:javascript
复制
======================================================================
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'...
EN

回答 1

Stack Overflow用户

发布于 2019-09-02 23:20:31

为了访问Content-Disposition,您需要访问响应headers -例如,您可以通过request.META.get('HTTP_CONTENT_DISPOSITION')实现这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57753988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档