产生这个问题的原因如下:

原稿加工 节点 继续 执行,需要进行判断,当条件(1、社内排版)满足,才会执行一排。

cucumber 如何中途退出 scenario


而, 想执行 社外排版 流程节点, 原理 类似

因此,代码如下

	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.





相关文章: