Как открыть и прочитать прикрепленный PDF из электронного письма в модульном тесте django? - PullRequest
0 голосов
/ 09 октября 2019

Я хотел бы проверить, что правильная информация была добавлена ​​в PDF и в отправленное электронное письмо. Я использую from django.core.mail import EmailMessage для создания сообщения и прикрепления PDF.

Мой юнит-тест:

class CommandTest(TestCase):
   def test_picklist_email_contains_pdf_with_material(self):
        response = self.client.get(reverse('retrieval:picklist'))
        self.assertEqual(len(mail.outbox), 1)
        self.assertEqual(mail.outbox[0].subject, 'Picklist TEST')
        self.assertIsNotNone(mail.outbox[0].attachments)

Сейчас я вижу, что сообщение отправлено, что существует нескольковложения и я могу видеть их темы, но я не могу прочитать фактические вложенные файлы. Вывод, когда я печатаю первое вложение, показывает заголовок и другую информацию, показанную ниже:

print(mail.outbox[0].attachments[0])

('lsf1_picklist10/08/19 04:22 PM.pdf', b'%PDF-1.4\n%\x93\x8c\x8b\x9e ReportLab Generated PDF document http://www.reportlab.com\n1 0 obj\n<<\n/F1 2 0 R\n>>\nendobj\n2 0 obj\n<<\n/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font\n>>\nendobj\n3 0 obj\n<<\n/Contents 7 0 R /MediaBox [ 0 0 612 792 ] /Parent 6 0 R /Resources <<\n/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]\n>> /Rotate 0 /Trans <<\n\n>> \n /Type /Page\n>>\nendobj\n4 0 obj\n<<\n/PageMode /UseNone /Pages 6 0 R /Type /Catalog\n>>\nendobj\n5 0 obj\n<<\n/Author (\\(anonymous\\)) /CreationDate (D:20191008162252+06\'00\') /Creator (\\(unspecified\\)) /Keywords () /ModDate (D:20191008162252+06\'00\') /Producer (ReportLab PDF Library - www.reportlab.com) \n /Subject (\\(unspecified\\)) /Title (\\(anonymous\\)) /Trapped /False\n>>\nendobj\n6 0 obj\n<<\n/Count 1 /Kids [ 3 0 R ] /Type /Pages\n>>\nendobj\n7 0 obj\n<<\n/Filter [ /ASCII85Decode /FlateDecode ] /Length 577\n>>\nstream\nGau0@;/_pX&:WeDS@"W#;B;Aa p @ ^ 43d & T @ 2; u5X_2GdQO76 \ '% / Xb: P7g1H_sUNUEhVV\ B ?!Qi\\i,42))_HdmbCS2:K<CCep_o6qK"1PBm*+<?Ks-[A4EnJtQXkKX+03Lm#("Xs0JBP,__!bX&+ao%9$XCt,;/:CJNpUQ"FJM09@9]6[BKOYF+l4;Ud^9.-[dAuIr<emqcLTaI\'Q!f<E^+A\'QR\'X=0>"6b2Cg9*HofMA.9T>Fo_dJ/ Dg ^ 1] Ii? [fIueE5CIl6Vhm_gaACr+*#aricR7(+dk]\\"0p0=[+Gp&Lq<GpZu[:gbm&L>L_2;^4OE<3ToIos.8hc\'4CR)[r+Z@iqBg\'h"86j*N>n$G@/q5D#%=gCRm7TC^Wp*f.Ahrc@M [.j; Br> THT] D3 $ м &] & 6Zd399D% C9Z0Ns ^ FFa6 / Bo3%! B? [# Sj \ # 5dTn / 0! + B: Q $ j /, конечный поток \ nendobj \ nxref \ n0 8 \ n0000000000 65535 f \ n0000000073 00000 n \ n0000000104 00000 n \ n0000000211 00000 n \ n0000000404 00000 n \ n0000000472n \ n0000000755 00000 n \ n0000000814 00000 n \ ntrailer \ n << \ n / ID \ n [] \ n% ReportLab сгенерированный PDF документ - дайджест (<a href="http://www.reportlab.com" rel="nofollow noreferrer">http://www.reportlab.com)\n\n/Info 5 0 R \ n / Root 4 0 R\ n / Размер 8 \ n >> \ nstartxref \ n1481 \ n %% EOF \ n ',' application / pdf ') `

Если я пытаюсь открыть файл, он говоритон не может открыть кортеж. Любые идеи о том, как я могу проверить текст прилагаемого PDF? Спасибо! Я пробовал

file = open(mail.outbox[0].attachments[0])
data = file.read()

, но получаю следующее: TypeError: expected str, bytes or os.PathLike object, not tuple.

...