我正在Katalon Studio中与Cucumber和Groovy合作。我有一个黄瓜功能文件,其中包含多个方案大纲,如下所述。
当我运行Cucumber功能文件时,它应该运行方案大纲第一部分的TestCase1以及方案大纲第二部分的步骤和TestCase1。
但是,它首先运行功能文件TestCase1和TestCase2的第一部分。这意味着它只是使用给定的凭证登录并关闭浏览器。
作为参考,下面还提到了步骤定义代码。
黄瓜功能文件:
@Login1
Feature: Title of your feature
I want to use this template for my feature file
@Login1 `**SECTION ONE**`
Scenario Outline: Login into GMP Application
Given running indicator flag
And User is on GMP Application Login Screen
When User enters the in the Login
And User enters the in the password
And User clicks on the ok button
Then User logged in successful at Home Screen
Examples:
| atid | pwd1 | runind | -> Header
| nm1013 | test01g | Y | -> TestCase1
| nm0313 | test02g | Y | -> TestCase2
@Login1 `**SECTION TWO**`
Scenario Outline: Click on the Create Inquiry Menu Item
Given User is on GMP Home Screen
When user click on the Inquiry menu item
And select the billing mode should be
And user click create inquiry item from the heading
Then it should displays create inquiry pagef
Examples:
| contract | -> Header
| GS00T07NSD0007 | -> TestCase1
| GS00T07NSD0007 | -> TestCase2
步骤定义
@Given(“running indicator flag (.*)”)
def run_indicator_flag(String ind1) {
println "Passing Indicator " + ind1
}
@And(“User is on GMP Application Login Screen”)
def user_on_GMP_Application_Login_Screen() {
boolean store2a
WebUI.openBrowser(’’)
WebUI.navigateToUrl(‘https://URL’, FailureHandling.STOP_ON_FAILURE)
}
@When(“User enters the (.*) in the Login”)
def user_enter_userid_in_the_Login(String uid) {
WebUI.setText(findTestObject(‘Object Repository/ORTC01/Page_/input_userid’),
uid, FailureHandling.STOP_ON_FAILURE)
}
@And(“User enters the (.*) in the password”)
def User_enters_the_in_the_password(String pwd5) {
WebUI.setText(findTestObject(‘Object
Repository/ORTC01/Page_/input_password’), pwd5,
FailureHandling.STOP_ON_FAILURE)
}
答案 0 :(得分:0)
首先,您无法连接Cucumber中的方案。每个方案都是一个单独的测试,从无开始,先执行某些操作,然后再重置为无。
第二个方案纲要只是以更紧凑的形式编写多个方案的一种方法。大纲中的每组示例都将导致创建和运行单个方案。我强烈建议您避免使用方案大纲
好的场景描述了正在做的事情而无需深入研究如何做。您的方案充满了如何完成工作,这使它们变得复杂且很难使用。您应该将所有操作方法都推入步骤定义中(或者更好的是由步骤定义调用的辅助方法。
如果您做这些事情,您将能够编写看起来像这样的场景
Scenario: Create a billing enquiry
Given I have a bill
And I am logged in
When I enquire about my bill
Then ...
注意:以上情况要短得多,并且没有关于您如何执行操作的详细信息。