Сценарий самотестирования mailtools

scenarij samotestirovaniya mailtools Сценарии на стороне клиента

Последний файл в пакете mailtools содержит программный код самотестирования, представленный в примере 13.26. Он оформлен в виде отдельного файла, чтобы обеспечить возможность манипулирования путем поиска модулей — он имитирует работу клиента, который, как предполагается, имеет собственный модуль mailconfig.py в своем каталоге (каждый клиент может иметь собственную версию этого модуля).

Пример 13.26. PP4E\Internet\Email\mailtools\selftest.py

############################################################################ когда этот файл запускается как самостоятельный сценарий, выполняет тестирование пакета

############################################################################

#

#  обычно используется модуль mailconfig, находящийся в каталоге клиента # или в пути sys.path; для нужд тестирования берется модуль

#  из каталога Email уровнем выше

#        

import sys

sys.path.append(‘..’)

import mailconfig

print(‘config:’, mailconfig.__file__)

#   получить из __init__

from mailtools import (MailFetcherConsole, MailSender, MailSenderAuthConsole, MailParser)

if not mailconfig.smtpuser:

sender = MailSender(tracesize=5000) else:

sender = MailSenderAuthConsole(tracesize=5000)

sender.sendMessage(From = mailconfig.myaddress,

To = [mailconfig.myaddress],

Subj = ‘testing mailtools package’, extrahdrs = [(‘X-Mailer’, ‘mailtools’)], bodytext = ‘Here is my source code\n’, attaches = [‘selftest.py’], )

#  bodytextEncoding=’utf-8′, # дополнительные тесты

#  attachesEncodings=[‘latin-1’], # проверка текста заголовков # attaches=[‘monkeys.jpg’]) # проверка Base64

#  to=’i18n adddr list…’, # тест заголовков mime/unicode

# измените параметр fetchlimit в модуле mailconfig,

# чтобы проверить ограничение на количество получаемых сообщений fetcher = MailFetcherConsole() def status(*args): print(args)

hdrs, sizes, loadedall = fetcher.downloadAllHeaders(status)

for num, hdr in enumerate(hdrs[:5]): print(hdr)

if input(‘load mail?’) in [‘y’, ‘Y’]:

print(fetcher.downloadMessage(num+1).rstrip(), ‘\n’, ‘-‘*70)

last5 = len(hdrs)-4

msgs, sizes, loadedall = fetcher.downloadAllMessages(status, loadfrom=last5) for msg in msgs:

print(msg[:200], ‘\n’, ‘-‘*70)

parser = MailParser()

for i in [0]: # попробуйте [0 , len(msgs)]

fulltext = msgs[i]

message = parser.parseMessage(fulltext)

ctype, maintext = parser.findMainText(message) print(‘Parsed:’, message[‘Subject’]) print(maintext)

input(‘Press Enter to exit’) # пауза на случай запуска # щелчком мыши в Windows

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий