PyTestReport Детали:
https://testerhome.com/opensource_projects/78
Пример кода
# Coding: UTF-8 Импорт ОС, UnitTest, время, HTMLTestRunner, smtplib от email.mime.multipart Импорт MimeMultipart из email.mime.text Импорт MimeText от конфигурации Импорт readconfig из pytestreport Импорт TestRunner # Импорт HTMLTestRunner_jpg # текущий путь к файлу сценария к истинным = os.path.dirname cur_path (os.path.realpath ( __FILE__ )) Печать (cur_path) # Печать (типа (cur_path)) # Шаг первый: метод загрузки с обнаружить все тестовые примеры DEF add_case (caseName =" Дело " , правило = " Тест * .py " ): '' ' Первый шаг: загрузка всех тестовых случаев ' '' case_path = os.path.join (cur_path, caseName) # Use Case папки # Если это не существует случай папки, он автоматически создает IF не os.path.exists (case_path): os.mkdir (case_path) Print ( " \ 033 [31mtest случае путь: \ 033 [0m% S " % case_path) # определены обнаружить методы параметр Откройте = unittest.defaultTestLoader.discover (case_path, шаблон = правило, top_level_dir = None) Печать (Discover) вернуться Discover # Шаг: HTML генерации отчетов DEF run_case (all_case, в REPORTNAME = « Отчет » ): «» ' Шаг два: выполнение всех случаев использования, и записывает результат в HTML - отчете об испытаниях '' ' теперь = time.strftime ( " % y_% м _ %% D_ Н-% m_% S " ) report_path = os.path.join (cur_path, REPORTNAME) # папка Протокол испытаний # Если папка не существует в настоящем докладе, автоматически создавать IF не os.path.exists (report_path): os.mkdir (report_path) #= Os.path.join report_abspath (report_path, теперь + "и result.html") # с именем протокола испытаний Дженкинс сгенерированной неподвижным и result.html report_abspath = в os.path.join (report_path, " и result.html " ) Печать ( " \ 033 [31mreport путь: \ 033 [0m% S " % report_abspath) FP = Open (report_abspath, " WB " ) # Протокол испытаний PyTestReport с Open (report_abspath, ' WB ' ) AS FP: Runner = TestRunner (FP, название = « тест название », The Описание = ' Описание теста ' , многословие = 2 ) # требует , чтобы добавить функция возвращает значение runner.run (all_case) # Шаг третий: Получите самое последнее испытание сообщает DEF get_report_file (report_path): '' ' Третий шаг: получить последние Протокол испытаний '' ' Списки = в os.listdir (report_path) lists.sort (Key = лямбда Fn: os.path.getmtime (в os.path.join (report_path, Fn))) Print (U ' последнего поколения Протокол испытаний: ' + Списки [-1 ]) #Найти последнюю версию файла отчета тест генерируется report_file = os.path.join (report_path, списки [-1 ]) возвращение report_file # Шаг четвертый: Отправить тест на почтовый ящик DEF send_mail (Sender, PSW, приемник, SMTPServer, report_file, порт) : '' ' шаг четыре: отправить последний тест ' '' с Open (файл_отчетом, " гь " ) AS F: mail_body = f.read () # определить содержательные Сообщи = MimeMultipart () тела = MimeText (mail_body , _subtype = ' HTML ' , _CHARSET = ' UTF - 8 . ' ) МСГ [ 'Предмет' ] = ' 自动化测试报告' Сообщ [ " от " ] = отправителя MSG [ " к " ] = приемник msg.attach (корпус) # 添加附件 Att = MimeText (открытое (файл_отчета, " RB " ) .read (), " base64 " , " UTF-8 " ) Att [ " Content-Type " ] = " приложения / октет-поток " Att [ " Content-Disposition "] = 'присоединение; имя файла = "report.html" ' msg.attach (ATT) попробуйте : SMTP = smtplib.SMTP_SSL (SMTPServer, порт) , за исключением : SMTP = smtplib.SMTP () smtp.connect (SMTPServer, порт) # 用户名密码 smtp.login (отправитель, PSW) smtp.sendmail (отправитель, получатель, msg.as_string ()) smtp.quit () печать ( ' отчет тестовое письмо имеет разослать! ' ) , если __name__ == " __main__ " : all_case = add_case () # 1加载用例 # Тестовый путь формирования отчетов run_case (all_case) # 2 Пример выполнения # получить последний отчет тестовый файл report_path = в os.path.join (cur_path, " Отчет " ) # с Пример папки файл_отчета = get_report_file (report_path) # . 3 , чтобы получить последний Протокол испытаний # почтовый ящик конфигурации ОТПРАВИТЕЛЬ = readConfig.sender PSW = readConfig.psw smtp_server = readConfig.smtp_server Порт = readConfig.port приемник = readConfig.receiver # send_mail (отправитель, PSW, приемник, smtp_server, report_file, порт) # 4 Заключительный шаг, чтобы отправить отчет
Сгенерированный отчет об испытаниях