详细说明上一篇 scenario
来源:互联网 发布:freehand 11 for mac 编辑:程序博客网 时间:2024/05/22 01:57
根据上一篇我说 的 ,划分 scenario 的 方法,来说明一下。
首先,在一个 Scenario 中,如何定义 步骤 ,其实很简单。
最简单的方法,可以理解为,流程进行一步,就写一个步骤, 这里的流程进行一步,是 需要 人员手动录入的步骤。不包含 fork ,join ,自动任务 ,Java 任务 和 自动判定任务。
下面这种,任务名称前面,带有 问号 的,属于自动判定任务,这种任务,一般 是,根据你在流程某一步,进行的某些操作,比如, 是否属于社内排原稿, 选择,是,或 ,否,走不同的流程节点。
下面的图标 属于 需要人员手工录入的 任务节点。
刚才说了,定义 Scenario 步骤,
1、需要手动录入的 流程节点,每一步,都可以设置为,一个 Scenario 步骤。
2、当前 Scenario 中,所有 步骤必须满足的条件 , 只有当满足该条件时,才会执行 这个Scenario ,这样的,可以提前出来,当作前提条件。也算是一个步骤,判断步骤。
比如,
Given 社内文编一审 和 编校部委托一审这个步骤的实现方法是:
this.Given(/^社内文编一审 和 编校部委托一审$/, function(callback) {if(bwzztsBase.ysqk == '社内文编一审'|| bwzztsBase.ysqk == '编校部委托一审') {console.log('一审情况 选择 社内文编一审 和 编校部委托一审 ,执行此 Scenario ');callback();}else{callback(new Error('一审情况属于:'+ bwzztsBase.ysqk +',并不执行 此 Scenario'));}});这个方法,只是一个判断,并没有任何实际的操作代码。 只有当满足条件,callback();
不满足,报错,并退出当前 Scenario 。
下面说,把那个 流程图,分别拆成了几个 Scenario ,和这么做的原因。
一个复杂的流程,我给分成了 15个 scenario 。
1、从流程开始 ,到 fork
2、 属于 fork 分支 1 编辑发设计要求。
3 和 4、 属于 fork 2 .是否有原稿
5、 属于 fork3 是否一级加急
6--13 属于 fork4 是否需要签订合同
14、 join 1 到 join 8
15、 join 8 到 end
fork2 ,拆分成 两个 Scenario 的原因,是 从 是否社内校对 和 是否直接付型 ,开始,会进行判断,继续执行 一校 流程 或者,直接 到 自动任务 4 .
,所以,把 这个 判定任务,也做成 Scenario 步骤 ,来判断是否 继续执行 一校 ,否则,跳过 一下 步骤。
6--13 ,同理。 只不过,分这么多Scenario 的原因,是因为,流程图太乱了。。
哪怕 流程图中,所有 的 不通过,和退改 不去判断,也是很乱的。
所以,我就提取出 最后需要判断的步骤
社领导三审,和 书稿三审。
分别进行判断, 只有当 什么条件的时候,才会执行 社领导三审 ? or 书稿三审?
穷举所有的方法 ,每个方法,都加判断条件, 都单独做 Scenario 。
这是最笨的办法了。
如果两个 Scenario , 有 同名 的步骤 ,同名,必须 都是,Then ,或者,都是When 才可以。
都是
Then 书稿二审 ,可以共用一个 书稿二审的方法。
下面的代码,是这个步骤的 方法。可以理解为,对这个操作步骤的解释。
this.Then(/^书稿二审$/, function(callback) {if(bwzztsBase.fszpdes =='分社长二审') {//******************************************************//切换iframe 到所有任务中。this.drive.switchTo().defaultContent();this.drive.sleep(100);homePage.syrwMenu(this).click();this.drive.sleep(500);var frame = homePage.alltaskIframe(this);this.drive.switchTo().frame(frame);homePage.rwmcInput(this).sendKeys('书稿二审');homePage.wdrwCXButton(this).click();this.drive.sleep(500);homePage.blButton(this).click();this.drive.sleep(500);//**********************************************************//切换tab 页bwzztsBase.sgsdTab(this).click();//书稿审读 tabbwzzts5.SGESshjlCheck(this).click();//审核结论if(bwzztsBase.pdss=='提交社领导助理三审'){bwzzts5.SGESshjlSelectZLSS(this).click();//提交社领导助理三审}else{bwzzts5.SGESshjlSelectSLDSS(this).click();//提交社领导三审}//点击 保存并继续homePage.startUp(this).click();this.drive.sleep(5000);}callback();});
暂时想到的,只有这些,再想到啥,以后补充。
下一篇博客,我分享 已经完成的,这个流程图的代码。
- 详细说明上一篇 scenario
- 手势识别代码详细说明2(衔接上一篇)
- 针对上一篇指针问题详细说明(c++向函数传递指针并修改其指向的问题)
- 一篇关于web.xml配置的详细说明
- 一篇关于web.xml配置的详细说明
- 一篇关于web.xml配置的详细说明-------------------转贴
- 一篇关于web.xml配置的详细说明 (转)
- 一篇关于web.xml配置的详细说明
- 一篇关于web.xml配置的详细说明
- 一篇关于web.xml配置的详细说明
- 一篇关于web.xml配置的详细说明
- 一篇关于web.xml配置的详细说明(一)
- 一篇关于web.xml配置的详细说明(二)
- 一篇关于web.xml配置的详细说明(三)
- 一篇关于web.xml配置的详细说明 转载经典
- 一篇关于web.xml配置的详细说明
- 一篇关于web.xml配置的详细说明
- 一篇关于web.xml配置的详细说明
- 51nod-1067 Bash游戏 V2
- jquery和javascript的区别(常用方法比较)
- 百度API获取某个工作日之后的时间
- 基于Spark ALS的离线推荐系统实践
- c++primer 第八章IO操控流的条件状态
- 详细说明上一篇 scenario
- Vuforia开发入门二-资源介绍
- 设计模式之代理模式 Android代码分析
- 平衡搜索树中的左单旋&右单旋&双旋
- 滲透 Facebook 的思路與發現
- Ubuntu16.04 Nvidia 显卡驱动安装
- BZOJ 1968 [Ahoi2005]COMMON 约数研究
- 关于有偿提供拼图响应式后台的通知
- curl命令使用