1. 新增用户简明教程 2. 新增安装部署教程

This commit is contained in:
苦叶子 2018-05-21 10:50:49 +08:00
parent a36ad7b59e
commit 4448acb0e3
3 changed files with 366 additions and 160 deletions

View File

@ -2,8 +2,9 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="c5ae474a-e2fe-4b02-bccd-d8be882227ae" name="Default" comment=""> <list default="true" id="c5ae474a-e2fe-4b02-bccd-d8be882227ae" name="Default" comment="">
<change beforePath="" afterPath="$PROJECT_DIR$/User Guide/User Guide/使用简明教程.md" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change beforePath="$PROJECT_DIR$/app/api/task.py" afterPath="$PROJECT_DIR$/app/api/task.py" /> <change beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" />
</list> </list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" /> <option name="TRACKING_ENABLED" value="true" />
@ -13,37 +14,23 @@
<option name="LAST_RESOLUTION" value="IGNORE" /> <option name="LAST_RESOLUTION" value="IGNORE" />
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.32900432"> <leaf>
<split-first> <file leaf-file-name="task.py" pinned="false" current-in-tab="false">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <entry file="file://$PROJECT_DIR$/app/api/task.py">
<file leaf-file-name="autoline.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/app/static/js/autoline.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405"> <state relative-caret-position="428">
<caret line="208" column="40" lean-forward="false" selection-start-line="208" selection-start-column="40" selection-end-line="208" selection-end-column="40" /> <caret line="93" column="37" lean-forward="false" selection-start-line="93" selection-start-column="37" selection-end-line="93" selection-end-column="37" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="runner.py" pinned="false" current-in-tab="false"> <file leaf-file-name="使用简明教程.md" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/app/utils/runner.py"> <entry file="file://$PROJECT_DIR$/User Guide/User Guide/使用简明教程.md">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="451">
<caret line="98" column="22" lean-forward="false" selection-start-line="98" selection-start-column="22" selection-end-line="98" selection-end-column="22" />
<folding>
<element signature="e#94#103#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]"> <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT"> <state split_layout="SPLIT">
<first_editor relative-caret-position="630"> <first_editor relative-caret-position="589">
<caret line="42" column="0" lean-forward="true" selection-start-line="42" selection-start-column="0" selection-end-line="42" selection-end-column="0" /> <caret line="204" column="0" lean-forward="true" selection-start-line="204" selection-start-column="0" selection-end-line="204" selection-end-column="0" />
<folding /> <folding />
</first_editor> </first_editor>
<second_editor /> <second_editor />
@ -51,16 +38,15 @@
</provider> </provider>
</entry> </entry>
</file> </file>
</leaf> <file leaf-file-name="README.md" pinned="false" current-in-tab="false">
</split-first> <entry file="file://$PROJECT_DIR$/README.md">
<split-second> <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<leaf> <state split_layout="SPLIT">
<file leaf-file-name="task.py" pinned="false" current-in-tab="true"> <first_editor relative-caret-position="450">
<entry file="file://$PROJECT_DIR$/app/api/task.py"> <caret line="30" column="0" lean-forward="true" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="278">
<caret line="83" column="13" lean-forward="false" selection-start-line="83" selection-start-column="13" selection-end-line="83" selection-end-column="13" />
<folding /> <folding />
</first_editor>
<second_editor />
</state> </state>
</provider> </provider>
</entry> </entry>
@ -129,8 +115,6 @@
</entry> </entry>
</file> </file>
</leaf> </leaf>
</split-second>
</splitter>
</component> </component>
<component name="FindInProjectRecents"> <component name="FindInProjectRecents">
<findStrings> <findStrings>
@ -197,8 +181,8 @@
<option value="$PROJECT_DIR$/version.txt" /> <option value="$PROJECT_DIR$/version.txt" />
<option value="$PROJECT_DIR$/manage.py" /> <option value="$PROJECT_DIR$/manage.py" />
<option value="$PROJECT_DIR$/history.md" /> <option value="$PROJECT_DIR$/history.md" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/app/api/task.py" /> <option value="$PROJECT_DIR$/app/api/task.py" />
<option value="$PROJECT_DIR$/README.md" />
</list> </list>
</option> </option>
</component> </component>
@ -268,6 +252,17 @@
<item name="app" type="462c0819:PsiDirectoryNode" /> <item name="app" type="462c0819:PsiDirectoryNode" />
<item name="utils" type="462c0819:PsiDirectoryNode" /> <item name="utils" type="462c0819:PsiDirectoryNode" />
</path> </path>
<path>
<item name="AutoLine" type="b2602c69:ProjectViewProjectNode" />
<item name="AutoLine" type="462c0819:PsiDirectoryNode" />
<item name="User Guide" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="AutoLine" type="b2602c69:ProjectViewProjectNode" />
<item name="AutoLine" type="462c0819:PsiDirectoryNode" />
<item name="User Guide" type="462c0819:PsiDirectoryNode" />
<item name="User Guide" type="462c0819:PsiDirectoryNode" />
</path>
</expand> </expand>
<select /> <select />
</subPane> </subPane>
@ -371,7 +366,7 @@
<frame x="3" y="23" width="1379" height="802" extended-state="0" /> <frame x="3" y="23" width="1379" height="802" extended-state="0" />
<editor active="true" /> <editor active="true" />
<layout> <layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.16243654" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23930384" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
@ -401,14 +396,6 @@
<watches-manager /> <watches-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/app/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-256">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/utils/process.py"> <entry file="file://$PROJECT_DIR$/app/utils/process.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="285"> <state relative-caret-position="285">
@ -628,14 +615,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/app/static/js/autoline.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405">
<caret line="208" column="40" lean-forward="false" selection-start-line="208" selection-start-column="40" selection-end-line="208" selection-end-column="40" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/static/js/project.js"> <entry file="file://$PROJECT_DIR$/app/static/js/project.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="347"> <state relative-caret-position="347">
@ -708,27 +687,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/app/utils/runner.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="451">
<caret line="98" column="22" lean-forward="false" selection-start-line="98" selection-start-column="22" selection-end-line="98" selection-end-column="22" />
<folding>
<element signature="e#94#103#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="630">
<caret line="42" column="0" lean-forward="true" selection-start-line="42" selection-start-column="0" selection-end-line="42" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/history.md"> <entry file="file://$PROJECT_DIR$/history.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]"> <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT"> <state split_layout="SPLIT">
@ -740,14 +698,54 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/app/utils/runner.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="451">
<caret line="98" column="22" lean-forward="false" selection-start-line="98" selection-start-column="22" selection-end-line="98" selection-end-column="22" />
<folding>
<element signature="e#94#103#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/static/js/autoline.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="405">
<caret line="208" column="40" lean-forward="false" selection-start-line="208" selection-start-column="40" selection-end-line="208" selection-end-column="40" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/api/task.py"> <entry file="file://$PROJECT_DIR$/app/api/task.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="278"> <state relative-caret-position="428">
<caret line="83" column="13" lean-forward="false" selection-start-line="83" selection-start-column="13" selection-end-line="83" selection-end-column="13" /> <caret line="93" column="37" lean-forward="false" selection-start-line="93" selection-start-column="37" selection-end-line="93" selection-end-column="37" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </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="450">
<caret line="30" column="0" lean-forward="true" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/User Guide/User Guide/使用简明教程.md">
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="589">
<caret line="204" column="0" lean-forward="true" selection-start-line="204" selection-start-column="0" selection-end-line="204" selection-end-column="0" />
<folding />
</first_editor>
<second_editor />
</state>
</provider>
</entry>
</component> </component>
<component name="masterDetails"> <component name="masterDetails">
<states> <states>

View File

@ -23,6 +23,10 @@
AutoLine开源平台是一个开源自动化测试解决方案基于RobotFramework进行二次开发支持RobotFramework几乎所有的库。 AutoLine开源平台是一个开源自动化测试解决方案基于RobotFramework进行二次开发支持RobotFramework几乎所有的库。
用户简明教程: [简明教程](https://github.com/small99/AutoLine/blob/master/User%20Guide/User%20Guide/使用简明教程.md)
安装部署教程: [安装教程](https://github.com/small99/AutoLine/blob/master/User%20Guide/User%20Guide/安装部署教程.md)
## 为什么要开发AutoLine ## 为什么要开发AutoLine
1. 为中小企业提供一个好用的自动化测试解决方案 1. 为中小企业提供一个好用的自动化测试解决方案

View File

@ -0,0 +1,204 @@
# AutoLine简明教程
<!-- TOC -->
- [AutoLine简明教程](#autoline简明教程)
- [基本的使用过程](#基本的使用过程)
- [AutoLine支持哪些关键字](#autoline支持哪些关键字)
- [Cron表达式说明](#cron表达式说明)
- [常用cron表达式](#常用cron表达式)
- [公众号](#公众号)
<!-- /TOC -->
## 基本的使用过程
AutoLine自动化测试基本过程为:
1. 创建产品
2. 创建项目
3. 创建对象集,并创建对象
4. 创建套件
5. 创建用例
6. 创建步骤
7. 重复3-6
8. 运行项目
9. 查看报告
使用AutoLine开源平台进行自动化测试的详细步骤为
1. 在"产品管理"下新增产品
![创建产品](../images/create_product.png)
2. 在"项目管理"下新增测试项目
![创建项目](../images/create_project.png)
3. 选择2中创建的项目准备进行规划测试项目
![选择项目](../images/select_project.png)
4. 在项目节点上"右击"鼠标,创建对象集
![创建对象集](../images/create_objects.png)
- 新增环境相关参数数据
- 新增元素定位数据
- 新增百度搜索关键词数据
如下图:
![数据分类](../images/create_object_category.png)
5. 在对象集节点上"右击"鼠标,创建对象
![创建对象](../images/create_object.png)
在4中的各对象集下创建相应的对象用于参数化如下图
![对象](../images/create_elements.png)
下面我们看下各对象的细节截图:
![](../images/url.png)
![](../images/browser.png)
![](../images/kw.png)
![](../images/btn.png)
![](../images/word.png)
![](../images/title.png)
6. 在项目节点上"右击"鼠标,创建套件集
![创建套件](../images/create_suite.png)
- 新增初始化套件
- 新增测试套件
- 新增清理套件
创建完成后如图:
![create_suite_detail](../images/create_suite_detail.png)
每个套件的属性如下图:
![](../images/init_suite.png)
![](../images/search_suite.png)
![](../images/clear_suite.png)
7. 在套件节点上"右击"鼠标,新增测试用例
![case](../images/add_case.png)
用例新增完成如图所示
![cases](../images/add_cases.png)
8. 在用例节点上"右击"鼠标,新增测试步骤,即关键字步骤
![add_step](../images/add_step.png)
详细的step说明
![step_detail](../images/step_detail.png)
这里以web测试来说明我们用SeleniumLibrary库提供的关键字
![seleniumlibrary](../images/selenniumlibrary.png)
完整的用例步骤如下:
![step_list](../images/step_list.png)
下面我们看一下各步骤的详细数据项截图:
![open browser](../images/open_browser.png)
![](../images/max.png)
![](../images/keyword.png)
![](../images/sleep.png)
![](../images/snapshot.png)
![](../images/click.png)
![](../images/get_title.png)
![](../images/assert.png)
9. 在项目节点上"右击"鼠标,选择运行
![](../images/run.png)
10. 在项目节点上"右击"鼠标,选择查看任务
![查看任务](../images/task_status.png)
11. 查看报告
![报告](../images/report.png)
## AutoLine支持哪些关键字
当前已经默认集成了RobotFramework一下关键字关键字的用法完全同RobotFramework
- 标准库
1. BuiltIn
2. Collections
3. DateTime
4. Dialogs
5. OperationSystem
6. Process
7. Screenshot
8. String
9. Telnet
10. XML
RobotFramework标准库关键字文档
http://robotframework.org/robotframework/#standard-libraries
- 第三方库
1. SeleniumLibrary
作用: 支持web UI测试
关键字文档: http://robotframework.org/SeleniumLibrary/SeleniumLibrary.html
2. Appium
作用: 支持APP移动端UI测试android&ios
关键字文档: http://serhatbolsu.github.io/robotframework-appiumlibrary/AppiumLibrary.html
3. Requests
功能: 支持HTTP接口测试
关键字文档: https://github.com/bulkan/robotframework-requests/#readme
## Cron表达式说明
在创建项目时需要输入cron表达式以实现定时的计划任务cron表达式格式同jenkins格式为
> minute, hour, day, month, day_of_week
默认值为: * * * * *
minute - 用于配置分钟
hour - 用于配置小时
day - 用于配置天
month - 用于配置月
day_of_week - 用于配置周里的天数
### 常用cron表达式
*/30 * * ? 每30分钟执行一次
0 12 * * ? 每天中午12点触发
15 10 * * ? 每天上午10:15触发
15 10 L * ? 每月最后一日的上午10:15触发
15 10 ? * 6L 每月的最后一个星期五上午10:15触发
0 1 * * ? 每天凌晨1点执行一次
更多的cron表达式用法 请直接看官方文档吧,自己去找文档
## 公众号
扫一扫关注公众号,获取平台第一手信息
![](../../app/static/images/deeptest.jpg)