修改README.md

This commit is contained in:
lily 2019-02-26 11:25:32 +08:00
parent 572fcb39c3
commit 4c82dff96b
4 changed files with 120 additions and 108 deletions

View File

@ -2,14 +2,10 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="09a4aeb4-cd0a-454b-9878-fc6edee9400a" name="Default" comment="">
<change afterPath="$PROJECT_DIR$/common/pageObject.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/page/searchPage.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/testcase/test_baiduSearch.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/common/sendEmail.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/sendEmail.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/page/LoginPage.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/url.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/run.py" beforeDir="false" afterPath="$PROJECT_DIR$/run.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/testcase/test_baidu.py" beforeDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
@ -38,8 +34,8 @@
<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="-95">
<caret line="7" column="25" lean-forward="true" selection-start-line="7" selection-start-column="25" selection-end-line="7" selection-end-column="25" />
<state relative-caret-position="393">
<caret line="31" lean-forward="true" selection-start-line="31" selection-end-line="31" />
<folding>
<element signature="e#0#15#0" expanded="true" />
</folding>
@ -47,11 +43,35 @@
</provider>
</entry>
</file>
<file leaf-file-name="sendEmail.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/common/sendEmail.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-133">
<caret line="8" column="9" selection-start-line="8" selection-start-column="9" selection-end-line="8" selection-end-column="9" />
<folding>
<element signature="e#48#57#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="README.md" pinned="false" current-in-tab="true">
<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="-165">
<caret line="30" column="1" selection-start-line="30" selection-start-column="1" selection-end-line="30" selection-end-column="1" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="searchPage.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/page/searchPage.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="20" lean-forward="true" selection-start-line="20" selection-end-line="20" />
<state relative-caret-position="221">
<caret line="20" column="51" selection-start-line="20" selection-start-column="51" selection-end-line="20" selection-end-column="51" />
<folding>
<element signature="e#0#53#0" expanded="true" />
</folding>
@ -62,8 +82,8 @@
<file leaf-file-name="test_baiduSearch.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/testcase/test_baiduSearch.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-173">
<caret line="34" column="27" selection-start-line="34" selection-start-column="27" selection-end-line="34" selection-end-column="27" />
<state relative-caret-position="-671">
<caret line="28" column="65" lean-forward="true" selection-start-line="28" selection-start-column="65" selection-end-line="28" selection-end-column="65" />
<folding>
<element signature="e#15#56#0" expanded="true" />
</folding>
@ -71,11 +91,6 @@
</provider>
</entry>
</file>
<file leaf-file-name="2019-02-26 10_45_51report.html" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/report/2019-02-26 10_45_51report.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
@ -135,13 +150,14 @@
<option value="$PROJECT_DIR$/imagetobase64.py" />
<option value="$PROJECT_DIR$/testcase/test.py" />
<option value="$PROJECT_DIR$/page/LoginPage.py" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/common/pageObject.py" />
<option value="$PROJECT_DIR$/page/searchPage.py" />
<option value="$PROJECT_DIR$/testcase/test_baidu.py" />
<option value="$PROJECT_DIR$/common/sendEmail.py" />
<option value="$PROJECT_DIR$/common/url.py" />
<option value="$PROJECT_DIR$/page/searchPage.py" />
<option value="$PROJECT_DIR$/testcase/test_baiduSearch.py" />
<option value="$PROJECT_DIR$/run.py" />
<option value="$PROJECT_DIR$/common/sendEmail.py" />
<option value="$PROJECT_DIR$/README.md" />
</list>
</option>
</component>
@ -171,26 +187,6 @@
<item name="Automated-Test" type="b2602c69:ProjectViewProjectNode" />
<item name="Automated-Test" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="Automated-Test" type="b2602c69:ProjectViewProjectNode" />
<item name="Automated-Test" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="Automated-Test" type="b2602c69:ProjectViewProjectNode" />
<item name="Automated-Test" type="462c0819:PsiDirectoryNode" />
<item name="page" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="Automated-Test" type="b2602c69:ProjectViewProjectNode" />
<item name="Automated-Test" type="462c0819:PsiDirectoryNode" />
<item name="report" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="Automated-Test" type="b2602c69:ProjectViewProjectNode" />
<item name="Automated-Test" type="462c0819:PsiDirectoryNode" />
<item name="testcase" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="Automated-Test" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
@ -411,8 +407,8 @@
<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 anchor="bottom" id="Run" order="2" visible="true" weight="0.3292683" />
<window_info anchor="bottom" id="Terminal" order="11" weight="0.32752612" />
<window_info anchor="bottom" id="Run" order="2" weight="0.3292683" />
<window_info anchor="bottom" id="Terminal" order="11" visible="true" weight="0.32752612" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.261924" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="right" id="Database" order="3" />
@ -441,9 +437,6 @@
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/common/__init__.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/__init__.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
@ -495,16 +488,6 @@
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/report/2019-02-19-14-47-46result.html" />
<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="-22">
<caret line="40" column="96" selection-start-line="40" selection-start-column="96" selection-end-line="40" selection-end-column="96" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/page/LoginPage.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
@ -532,16 +515,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/sendEmail.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="506">
<caret line="48" selection-start-line="48" selection-end-line="48" />
<folding>
<element signature="e#47#56#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/HTMLTestRunner.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="5700">
@ -552,38 +525,61 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/run.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-95">
<caret line="7" column="25" lean-forward="true" selection-start-line="7" selection-start-column="25" selection-end-line="7" selection-end-column="25" />
<folding>
<element signature="e#0#15#0" expanded="true" />
</folding>
</state>
</provider>
<entry file="file://$PROJECT_DIR$/report/2019-02-26 10_45_51report.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/page/searchPage.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="380">
<caret line="20" lean-forward="true" selection-start-line="20" selection-end-line="20" />
<folding>
<element signature="e#0#53#0" expanded="true" />
</folding>
</state>
</provider>
<entry file="file://$PROJECT_DIR$/report/2019-02-26 10_49_31report.html">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/testcase/test_baiduSearch.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-173">
<caret line="34" column="27" selection-start-line="34" selection-start-column="27" selection-end-line="34" selection-end-column="27" />
<state relative-caret-position="-671">
<caret line="28" column="65" lean-forward="true" selection-start-line="28" selection-start-column="65" selection-end-line="28" selection-end-column="65" />
<folding>
<element signature="e#15#56#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/report/2019-02-26 10_45_51report.html">
<provider selected="true" editor-type-id="text-editor" />
<entry file="file://$PROJECT_DIR$/page/searchPage.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="221">
<caret line="20" column="51" selection-start-line="20" selection-start-column="51" selection-end-line="20" selection-end-column="51" />
<folding>
<element signature="e#0#53#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/run.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="393">
<caret line="31" lean-forward="true" selection-start-line="31" selection-end-line="31" />
<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="-133">
<caret line="8" column="9" selection-start-line="8" selection-start-column="9" selection-end-line="8" selection-end-column="9" />
<folding>
<element signature="e#48#57#0" expanded="true" />
</folding>
</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="-165">
<caret line="30" column="1" selection-start-line="30" selection-start-column="1" selection-end-line="30" selection-end-column="1" />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</component>
</project>

View File

@ -1,8 +1,8 @@
# Automated-Test
页面自动化测试框架
## Web自动化测试框架
测试框架:
python3+Selenium+unittest自动化UI测试框架
### 测试框架:
python3+Selenium+unittest+HTMLTestRunner+pageObject Web自动化测试框架
selenium+unittest搭建的WebUI自动化测试框架
@ -12,35 +12,41 @@ python3+Selenium+unittest自动化UI测试框架
测试代码托管平台GitHub
通过主从服务器执行测试
测试代码结构:
### 测试代码结构:
![](https://raw.githubusercontent.com/linyuli861/Automated-Test/master/z-README-image/structure.png)
> common文件夹存放公有元素如url测试报告发送邮件地址使用信息等
* common文件夹存放公有元素如url测试报告发送邮件地址使用信息等
> file文件夹存放测试过程中需要使用的文件如图片txtzip文件等
* file文件夹存放测试过程中需要使用的文件如图片txtzip文件等
> page文件夹用于存放测试过程中需要使用的页面元素
* page文件夹用于存放测试过程中需要使用的页面元素
> report文件夹用于存放测试生成的测试报告
* report文件夹用于存放测试生成的测试报告
> testcase文件夹中存放测试用例
* testcase文件夹中存放测试用例
> HTMLTestRunner.py是将测试结果生成为html版的测试报告的文件
* HTMLTestRunner.py是将测试结果生成为html版的测试报告的文件
> run.py 执行run.py文件可以执行全部测试用例
* run.py 执行run.py文件可以执行全部测试用例
生成的测试报告例子如下所示
###生成的测试报告例子如下所示
![](https://raw.githubusercontent.com/linyuli861/Automated-Test/master/z-README-image/report.png)
###发送邮件如下所示:
调用common中的sendEmail向指定邮箱发送最新的测试报告文件
发送邮件如下所示:
![](https://raw.githubusercontent.com/linyuli861/Automated-Test/master/z-README-image/email.jpg)
###PageObject设计模式
由于Web页面自动化测试的过程中会存在许多重复的元素且很多Web页面测试的元素值不稳定经常变更
为了使得Web页面自动化测试的代码更具有健壮性因此使用PageObject设计模式
将web自动化测试的测试用例和测试用例中需要使用到的元素解耦。
*解耦后的代码方便修改,增强了自动化测试代码的复用性。*

View File

@ -1,4 +1,13 @@
# email3381350680@qq.com passwordabc123456
"""
使用一个邮箱向另一个邮箱发送测试报告的html文件这里需要对发送邮件的邮箱进行设置获取邮箱授权码
username=发送邮件的邮箱 password=邮箱授权码
这里要特别注意password不是邮箱密码而是邮箱授权码
mail_server = "发送邮箱的服务器地址"
这里常用的有 qq邮箱"stmp.qq.com", 163邮箱"stmp.163.com"
其他邮箱可自行百度
"""
import os
import smtplib
from email.mime.text import MIMEText

17
run.py
View File

@ -19,12 +19,13 @@ if __name__ == '__main__':
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'Web自动化测试', description=u'详细测试结果如下:')
fp = open(filename, 'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, 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)
fp.close()
# 向指定邮箱发送测试报告的html文件
time.sleep(6)
# 查找最新生成的测试报告地址
new_report_addr = SendEmail().acquire_report_address(test_reports_address)
# 自动发送邮件
SendEmail().send_email(new_report_addr)