产生这个问题的原因如下:
从原稿加工 节点 继续 执行,需要进行判断,当条件(1、社内排版)满足,才会执行一排。而, 想执行 社外排版 流程节点, 原理 类似
因此,代码如下
this.Then(/^一排$/, function(callback) {
if(bwzztsBase.sfsnpb =='是') {
//******************************************************
//切换iframe 到所有任务中。
//点击 保存并继续
homePage.startUp(this).click();
this.drive.sleep(5000);
}
callback();
});
this.Then(/^社外排版$/, function(callback) {
if(bwzztsBase.sfsnpb =='否') {
//点击 保存并继续
homePage.startUp(this).click();
this.drive.sleep(5000);
}
callback();
});
但是,如果想走流程 一校 ,则 有两种情况 分别是 第一个图 中的 红线 和 蓝线。
并且,一校 以下所有 流程节点, 在执行 方法前,都需要 加 一校的判断条件,
即,子方法 想执行,必须满足 父方法 前提条件。
所以,一校 以下所有的方法 都得 满足一校的 前提条件 。。
所以,拆出一校以及一校以下节点,单独做Scenario。
但是,这个 Scenario 有 不执行的情况,所以,需要在 Scenario 中 的 前提条件 ,进行判断 ,如果 满足 走 一校 流程节点, 则继续 执行 当前 Scenario 的方法。
如果不满足一校流程节点,就不应该继续执行以下方法,应该退出。
以上是问题产生的前提条件。
问题解决代码如下:
下面是cucumber 代码
@first
Scenario: 是否有原稿 到 图书定价印数折扣通知单
When 社内排出原稿
Then 送社外排出原稿
Then 原稿加工
Then 社外排版
# 一排 流程 下 , 是否直接付型 ,是由 一排选择的二级加急决定。
Then 一排
#一校级以下情况,需要 是社内校对,且 否二级加急前提。因此拆出单独scenario
@first
Scenario: 一校流程
When 社内校对,并且不是二级加急
Then 一校
Then 申请一校付型
Then 二改
Then 二校
Then 三改
Then 三校
Then 四改
Then 四校
首先,拆出 一校 以及 以下 流程节点,单独做成 Scenario 。
然后, When ,并不是流程 节点方法 ,而是 增加的一个判断方法 。
当满足 情况时,会继续执行 ,一校,申请一校付型,等等。
如果不满足条件, 退出当前 Scenario
When 方法代码如下:
this.When(/^社内校对,并且不是二级加急$/, function(callback) {
if((bwzztsBase.sfsnpb == '否' && bwzztsBase.sfsnjd == '是' )|| (bwzztsBase.sfsnpb == '是'&& bwzztsBase.ypsfejjj == '否')) {
console.log('流程执行一校 及其以下流程,有两种情况');
console.log('1、社外排版,社内校对 即 sfsnpb == "否" 和 sfsnjd == "是" ');
console.log('1、一排,一排二级加急 即 sfsnpb == "是" 和 ypsfejjj == "否" ');
callback();
}else{
callback(new Error('当前流程,并不执行 此 Scenario'));
}
});很简单 ,正常的 流程 是执行 callback();
想退出 ,加一个 Error 就可以了。
所以,当 条件不满足时, 就会退出 当前Scenario 。
继续执行 下面的Scenario 。
这样, 一校 和 一校 以下 的流程节点, 就没有必要 加上很多的 前提判断条件了。
执行 当前Scenario 报错的代码如下:
@first
Scenario: 一校流程
xufei
√ Given 用户名 "xufei" 密码 "xufei" 登录系统
√ Then 打开我的任务
√ Then 打开待办事项
√ Then 打开所有任务
× When 社内校对,并且不是二级加急
- Then 一校
- Then 申请一校付型
- Then 二改
- Then 二校
- Then 三改
- Then 三校
- Then 四改
- Then 四校
Failures:
1) Scenario: 一校流程 - features\bw-zzts.feature:82
Step: When 社内校对,并且不是二级加急 - features\bw-zzts.feature:83
Step Definition: features\step_definitions\bw\bw-zzts-3.step.js:159
Message:
Error: 当前流程,并不执行 此 Scenario
at World.<anonymous> (W:\AutoTestProject\LawEditorial-autotest\features\step_definitions\bw\bw-zzts-3.step.js:166:13)
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickCallback (node.js:349:13)
4 scenarios (1 failed, 3 passed)
41 steps (1 failed, 8 skipped, 32 passed)
1m54.785s
>> Exited with code: 1.
Warning: Task "exec:run_chrome" failed. Use --force to continue.
Aborted due to warnings.