详细说明上一篇 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();});


暂时想到的,只有这些,再想到啥,以后补充。

下一篇博客,我分享 已经完成的,这个流程图的代码。


0 0