产生这个问题的原因如下:
从原稿加工 节点 继续 执行,需要进行判断,当条件(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.
分享到:
相关推荐
Scenario: Search Baidu # D:/workspace eclipse/test/src/test/features/testBaidu.feature:5 Given Go to Baidu home page # TestBaiduStepfs.go_to_Baidu_home_page() When Type the search text "selenium" #...
Cucumber.jar是一个关键组件,它是自动化测试框架Cucumber的核心库,用于支持行为驱动开发(BDD)中的测试执行。这个JAR文件包含了运行Cucumber测试所必需的类和资源,使得开发者和非技术人员可以通过自然语言编写可...
【IntelJ IDEA与Cucumber Java整合实践】 在软件测试领域,行为驱动开发(Behavior Driven Development, BDD)是一种常用的方法论,它强调通过描述软件的行为来定义需求。Cucumber是一个支持BDD的自动化测试框架,...
Cucumber 是一个流行的 Behavior Driven Development (BDD) 工具,主要在软件开发中用于编写可执行的规范。它支持多种编程语言,包括 Ruby,而这里的配置指南针对的是使用 Ruby 的环境。以下是对配置过程的详细解释...
Scenario: Successful registration Given I am on the registration page When I enter valid details Then I should see a success message ``` 4. **运行测试**: 使用 JUnit 或其他测试运行器来执行测试。...
You can test just about anything with Cucumber. We certainly have, and in Cucumber Recipes we’ll show you how to apply our hard-won field experience to your own projects. Once you’ve mastered the ...
### 关于《Cucumber书》(英文版)的知识点概览 #### 一、Cucumber的概念与作用 根据书名及描述,“Cucumber”并非一个简单的应用测试工具,而是一种沟通理念,它能够有效地帮助开发者与客户之间建立更加清晰的...
cucumber-reporting, Cucumber的HTML报告 发布 pretty Cucumber 报告这是一个用于在Jenkins构建服务器上发布 Cucumber 报告的Java报告发布者。 它发布了漂亮的html报告,图表显示 Cucumbe
Cucumber.js 是 Cucumber 的纯 JavaScript 实现。要求Node.js or io.jsNPMCucumber.js 支持:Node.js 0.8, 0.10, 0.11, 0.12 and io.js (see CI builds)Google ChromeFirefoxSafariOpera 标签:Cucumber
Gherkin语言的关键词包括Feature(特性)、Scenario(场景)、Given(给定)、When(当)、Then(那么)等。通过Gherkin,可以编写用户故事和验收标准,然后通过Cucumber来将这些规范转化为可执行的测试用例。 Java...
Cucumber是一个行为驱动开发(Behavior Driven Development,简称BDD)的工具,它被广泛用于软件开发中以提升项目团队成员之间的沟通效率。根据所给文件内容,我们可以从以下几个方面深入了解Cucumber行为驱动开发的...
【标题】:“Cucumber-Groovy-1.1.1.zip” 这个压缩包“cucumber-groovy-1.1.1.zip”包含了Cucumber的一个版本,它是一个自动化测试工具,专为集成行为驱动开发(BDD)到Groovy编程语言中而设计。Cucumber允许...
nightwatch-cucumber, Nightwatch.js的Cucumber.js 插件 cucumber http://mucsi96.github.io/nightwatch-cucumber 问:问问题 。这里模块支持将bdd样式方法用于 跨浏览器 测试:使用 Gherkin 语
cucumber是一种可以使用文本描述语言来执行自动测试用例的工具,cucumber-java.jar通过java编写需要下载这个包
cucumber-ruby, ruby的Cucumber CucumberCucumber 是一种用纯语言编写自动化测试的工具。 因为他们是用普通语言写的,所以你的团队里任何人都可以读到。 因为他们可以以被任何人阅读,你可以以用它们来帮助改善你的...
Cucumber 是一个强大的自动化测试工具,它支持行为驱动开发(BDD)。在软件开发中,BDD 是一种方法论,它强调从用户的角度来描述软件的功能,使得非技术人员也能理解软件的行为。Cucumber 可以将这些描述转换为可...
Cucumber disease leaf image dataset containing 11 different disease types