2016-12-13 2 views
1

У меня есть API, который генерирует и возвращает CSV файл:Как проверить ответ файла в Django?

def getCSV(): 
    response = HttpResponse(content_type='text/csv') 
    response['Content-Disposition'] = 'attachment; filename=export.csv' 
    writer = csv.writer(response, csv.excel) 

    # ... Write some CSV content ... 

    return response 

Это прекрасно работает, когда я называю его из браузера, но я не могу понять, как написать тест, который вызывает API и убедитесь, что Содержимое CSV - это то, чем они должны быть.

Если я:

c = Client() 
r = c.get('/my/export/api') 
print(r.content) 

Это просто печатает три байта и, скорее всего, концептуально совершенно неправильно.

Как я могу получить содержимое ответа CSV-файла в своем тесте?

+2

Возможный дубликат [Джанго Test Unit для проверки загрузки файла] (http://stackoverflow.com/questions/8244220/django-unit-test-for-testing-a-file -скачать) – e4c5

ответ

1

How to read a csv django http response

import csv 
import io 

def test_csv_export(self): 

    response = self.client.get('/my/export/api') 
    self.assertEqual(response.status_code, 200) 

    content = response.content.decode('utf-8') 
    cvs_reader = csv.reader(io.StringIO(content)) 
    body = list(cvs_reader) 
    headers = body.pop(0) 

    print(body) 
    print(headers) 
Смежные вопросы