添加发送邮箱

This commit is contained in:
lily 2019-02-19 19:23:12 +08:00
parent c13b1ac588
commit 8edab5702d
10 changed files with 2722 additions and 48 deletions

View File

@ -2,10 +2,9 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="09a4aeb4-cd0a-454b-9878-fc6edee9400a" name="Default" comment="">
<change afterPath="$PROJECT_DIR$/common/sendEmail.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/run.py" beforeDir="false" afterPath="$PROJECT_DIR$/run.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/testcase/test.py" beforeDir="false" afterPath="$PROJECT_DIR$/testcase/test_baidu.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/testcase/testDemo.py" beforeDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
@ -22,31 +21,32 @@
<SUITE FILE_PATH="coverage/Automated_Test$run__1_.coverage" NAME="run (1) Coverage Results" MODIFIED="1550497417209" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
<SUITE FILE_PATH="coverage/Automated_Test$test.coverage" NAME="test Coverage Results" MODIFIED="1550558865800" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
<SUITE FILE_PATH="coverage/Automated_Test$Unittests_for_test_TestDemo.coverage" NAME="Unittests for test.TestDemo Coverage Results" MODIFIED="1550493736228" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
<SUITE FILE_PATH="coverage/Automated_Test$run.coverage" NAME="run Coverage Results" MODIFIED="1550565837118" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
<SUITE FILE_PATH="coverage/Automated_Test$sendEmail.coverage" NAME="sendEmail Coverage Results" MODIFIED="1550574997598" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
<SUITE FILE_PATH="coverage/Automated_Test$run.coverage" NAME="run Coverage Results" MODIFIED="1550575005734" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
<SUITE FILE_PATH="coverage/Automated_Test$Unittests_in_t_py.coverage" NAME="Unittests in t.py Coverage Results" MODIFIED="1550495271315" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
<SUITE FILE_PATH="coverage/Automated_Test$Unittests_for_test_TestLogin.coverage" NAME="Unittests for test.TestLogin Coverage Results" MODIFIED="1550545430554" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/testcase" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="test_baidu.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/testcase/test_baidu.py">
<file leaf-file-name="run.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/run.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="392">
<caret line="48" column="18" selection-start-line="48" selection-start-column="18" selection-end-line="48" selection-end-column="18" />
<state relative-caret-position="38">
<caret line="20" column="38" selection-start-line="20" selection-start-column="38" selection-end-line="20" selection-end-column="38" />
<folding>
<element signature="e#15#56#0" expanded="true" />
<element signature="e#0#15#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="run.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/run.py">
<file leaf-file-name="sendEmail.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/common/sendEmail.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171">
<caret line="12" lean-forward="true" selection-start-line="12" selection-end-line="12" />
<state relative-caret-position="38">
<caret line="38" column="6" selection-start-line="38" selection-start-column="6" selection-end-line="38" selection-end-column="6" />
<folding>
<element signature="e#0#15#0" expanded="true" />
<element signature="e#47#56#0" expanded="true" />
</folding>
</state>
</provider>
@ -107,12 +107,13 @@
<option value="$PROJECT_DIR$/HTMLTestRunner.py" />
<option value="$PROJECT_DIR$/report/2019-02-19-14-35-13result.html" />
<option value="$PROJECT_DIR$/Page.py" />
<option value="$PROJECT_DIR$/page/LoginPage.py" />
<option value="$PROJECT_DIR$/page/loginPage1.py" />
<option value="$PROJECT_DIR$/imagetobase64.py" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/testcase/test.py" />
<option value="$PROJECT_DIR$/page/LoginPage.py" />
<option value="$PROJECT_DIR$/run.py" />
<option value="$PROJECT_DIR$/common/sendEmail.py" />
</list>
</option>
</component>
@ -146,7 +147,11 @@
<path>
<item name="Automated-Test" type="b2602c69:ProjectViewProjectNode" />
<item name="Automated-Test" type="462c0819:PsiDirectoryNode" />
<item name="testcase" type="462c0819:PsiDirectoryNode" />
<item name="report" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="Automated-Test" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
</path>
</expand>
<select />
@ -244,6 +249,25 @@
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
</configuration>
<configuration name="sendEmail" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="Automated-Test" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="D:\tmp\test\venv\Scripts\python3.exe" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/testcase" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/common/sendEmail.py" />
<option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" />
<option name="MODULE_MODE" value="false" />
</configuration>
<configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true">
<module name="Automated-Test" />
<option name="INTERPRETER_OPTIONS" value="" />
@ -267,10 +291,12 @@
<item itemvalue="Python.test" />
<item itemvalue="Python.imagetobase64" />
<item itemvalue="Python.run" />
<item itemvalue="Python.sendEmail" />
</list>
<recent_temporary>
<list>
<item itemvalue="Python.run" />
<item itemvalue="Python.sendEmail" />
<item itemvalue="Python.imagetobase64" />
<item itemvalue="Python.test" />
</list>
@ -330,9 +356,9 @@
<window_info anchor="bottom" id="Database Changes" order="9" show_stripe_button="false" />
<window_info anchor="bottom" id="Version Control" order="8" />
<window_info anchor="bottom" id="Python Console" order="10" />
<window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.3292683" />
<window_info anchor="bottom" id="Run" order="2" visible="true" weight="0.3292683" />
<window_info anchor="bottom" id="Terminal" order="11" weight="0.32752612" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.25383994" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.25383994" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="right" id="Database" order="3" />
<window_info anchor="bottom" id="Find" order="1" weight="0.3292683" />
@ -360,17 +386,6 @@
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/testcase/test_baidu.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="114">
<caret line="6" lean-forward="true" selection-start-line="6" selection-end-line="6" />
<folding>
<element signature="e#15#56#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/movie.py" />
<entry file="file://$PROJECT_DIR$/reports/HTMLTestRunner.py" />
<entry file="file://D:/software/Python/python2.7.10/Lib/unittest/loader.py">
<provider selected="true" editor-type-id="text-editor">
@ -587,9 +602,6 @@
<entry file="file://$PROJECT_DIR$/page/LoginPage.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/page/LoginPage.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/file/test01.txt">
<provider selected="true" editor-type-id="text-editor" />
</entry>
@ -603,13 +615,6 @@
<entry file="file://$PROJECT_DIR$/z-README-image/structure.png">
<provider selected="true" editor-type-id="images" />
</entry>
<entry file="file://$PROJECT_DIR$/report/2019-02-19-14-47-46result.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="190">
<caret line="10" column="46" selection-start-line="10" selection-start-column="46" selection-end-line="10" selection-end-column="46" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/HTMLTestRunner.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2306">
@ -620,13 +625,19 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="-475">
<caret line="11" column="19" lean-forward="true" selection-start-line="11" selection-start-column="19" selection-end-line="11" selection-end-column="19" />
</first_editor>
<second_editor />
<entry file="file://$PROJECT_DIR$/report/2019-02-19 16_32_21_result.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/report/2019-02-19 16_32_28_result.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/report/2019-02-19 16_43_57report.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/report/2019-02-19-14-47-46result.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="190">
<caret line="10" column="46" selection-start-line="10" selection-start-column="46" selection-end-line="10" selection-end-column="46" />
</state>
</provider>
</entry>
@ -640,15 +651,38 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="206">
<caret line="47" lean-forward="true" selection-start-line="47" selection-end-line="47" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/page/LoginPage.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/run.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="171">
<caret line="12" lean-forward="true" selection-start-line="12" selection-end-line="12" />
<state relative-caret-position="38">
<caret line="20" column="38" selection-start-line="20" selection-start-column="38" selection-end-line="20" selection-end-column="38" />
<folding>
<element signature="e#0#15#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/sendEmail.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
<caret line="38" column="6" selection-start-line="38" selection-start-column="6" selection-end-line="38" selection-end-column="6" />
<folding>
<element signature="e#47#56#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
</project>

54
common/sendEmail.py Normal file
View File

@ -0,0 +1,54 @@
# email3381350680@qq.com passwordabc123456
import os
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import time
# 自动发送邮件
class SendEmail():
def send_email(self, new_report):
# 读取测试报告中的内容作为邮件的内容
with open(new_report, 'r', encoding='utf8') as f:
mail_body = f.read()
# 发件人地址
send_addr = '3381350680@qq.com'
# 收件人地址
reciver_addr = '3381350680@qq.com'
# 发送邮箱的服务器地址 qq邮箱是'smtp.qq.com', 136邮箱是'smtp.136.com'
mail_server = 'smtp.qq.com'
now = time.strftime("%Y-%m-%d %H_%M_%S")
# 邮件标题
subject = 'web自动化测试报告测试报告' + now
# 发件人的邮箱及邮箱授权码
username = '3381350680@qq.com'
password = '**' # 注意这里是邮箱的授权码而不是邮箱密码
# 邮箱的内容和标题
message = MIMEText(mail_body, 'html', 'utf8')
message['Subject'] = Header(subject, charset='utf8')
# 发送邮件
smtp = smtplib.SMTP()
smtp.connect(mail_server)
smtp.login(username, password)
smtp.sendmail(send_addr, reciver_addr.split(','), message.as_string())
smtp.quit()
# 获取最新报告的地址
def acquire_report_address(self, reports_address):
# 测试报告文件夹中的所有文件加入到列表
test_reports_list = os.listdir(reports_address)
# 按照升序排序生成新的列表
new_test_reports_list = sorted(test_reports_list)
# 获取最新的测试报告
the_last_report = new_test_reports_list[-1]
# 最新的测试报告地址
the_last_report_address = os.path.join(reports_address, the_last_report)
return the_last_report_address

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

12
run.py
View File

@ -1,10 +1,13 @@
import unittest
import HTMLTestRunner
import time
from common.sendEmail import SendEmail
def get_test_cases(dirpath):
# dirpath 是存放测试用例的文件路径
test_cases = unittest.TestSuite()
# 测试用例均使用"test_"开头命名
suites = unittest.defaultTestLoader.discover(dirpath, 'test_*.py', top_level_dir=dirpath)
for suite in suites:
test_cases.addTests(suite)
@ -14,7 +17,14 @@ def get_test_cases(dirpath):
if __name__ == '__main__':
cases = get_test_cases('../testcase')
now = time.strftime("%Y-%m-%d %H_%M_%S")
test_reports_address = '../report'
filename = '../report/' + now + 'report.html' # 设置报告文件名
f = open(filename, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=f, title=u'TEST', description=u'详细测试结果如下:')
runner = HTMLTestRunner.HTMLTestRunner(stream=f, title=u'Web自动化测试', description=u'详细测试结果如下:')
runner.run(cases)
f.close()
time.sleep(6)
# 查找最新生成的测试报告地址
new_report_addr = SendEmail().acquire_report_address(test_reports_address)
# 自动发送邮件
SendEmail().send_email(new_report_addr)