2014-07-08 11 views
5

Django test client'u kullanarak bir web sayfasına erişen bir Django testine sahibim.django.test.Client ve response.content vs. streaming_content

Testlerden birinde sunucu, ek olarak bir ZIP dosyası döndürür.

D:

zip_content = StringIO(response.content) 
zip = ZipFile(zip_content) 

Bu aşağıdaki kullanımdan kaldırılması uyarıyı neden olur: Aşağıdaki kod ile ZIP dosyasının içeriğine erişmek/Gelişmeler/Arkeoloji/DB/ArtefactDatabase/Websunucusu \ importexport \ testler \ test_import.py:1: DeprecationWarning: Bir akış yanıtında content özniteliğine erişme kullanımdan kaldırılmıştır.

response.streaming_content getiri kesinlikle ZipFile için gerekli oluyor bir dosya benzeri nesne değil haritanın çeşit, instead.` streaming_content özelliği kullanın. Bunun için streaming_content özniteliğini nasıl kullanabilirim?

Bu arada, normal bir HTML sayfasının response.content öğesine eriştiğimde, response.content'u StringIO10'a geçirirken yalnızca kullanımdan kaldırma uyarısını aldım, uyarı yok.

cevap

0

Testinizin yaklaşımını değiştirmelisiniz. response.streaming_content, tam olarak ne yapmak istediğini yapar. Sadece testi indirmek için çağrı tamam.

Dosya oluşturma/bütünlük yöntemlerini test etmek isterseniz, özelliğini ayrı ayrı test etmeniz gerekir. Dosyanızın bir ZIP veya Django Testine bir CSV olup olmaması önemli değil, ancak buna yaptığınız çağrı tamamsa.

+3

Entegrasyon testinin amacı, aramayı ve sonucunu doğruluğunu test etmektir. Yanıtın içeriğinin doğru olup olmadığını kontrol etmeden testin geçtiğini söylemek yeterli değildir. – Risadinha

4

Python Kullanımı 3.4.

zip_content = io.StringIO("".join(response.streaming_content)) 
zip = ZipFile(zip_content) 

Bayt ile: ayrıca https://github.com/sio2project/oioioi/blob/master/oioioi/filetracker/tests.py

See TestStreamingMixin bulunan

zip_content = io.BytesIO(b"".join(response.streaming_content)) 
zip = ZipFile(zip_content) 

Çözüm: Dize ile

https://docs.djangoproject.com/en/1.7/ref/request-response/

Sen olup olmadığını test etmek isteyebilirsiniz cevap ben response.streaming (boolean) öğesini denetleyerek bir akış.