我刚刚开始从事BDD黄瓜的研究。我正在使用scala编写测试用例。我试图在场景定义中使用场景大纲并传递参数。我的代码如下。
Scenario Outline: Data is parsed and persisted
Given Portal is running
When A data of <type> is received
Then The data of <type> with <Id> should be parsed and persisted
Examples:
| type | Id |
| Personal | 1 |
|Professional | 2 |
现在在我的when条件下,我试图按以下方式获取这些参数
When("""^A data of \"([^\"]*)\" is received$""") {
(type: String) =>
//My code
}
现在,在运行代码时,每次都会出现以下错误。
io.cucumber.junit.UndefinedStepException: The step "A data of Personal is received" is undefined. You can implement it using the snippet(s) below:
When("""A data of Personal is received""") { () =>
// Write code here that turns the phrase above into concrete actions
throw new io.cucumber.scala.PendingException()
}
尽管我的代码在什么时候。另外,如果我不使用方案大纲,那么它可以正常工作,但是我想在代码中使用方案大纲。
我正在使用功能文件中的标签来运行测试用例。当我使用命令sbt test @ tag1运行测试用例时,测试用例执行正常,但是当所有测试用例在cmd上运行完毕时,我得到以下错误:
[error] Expected ';'
[error] @tag1
我尝试放入“;”标签后,但仍然出现相同的错误 这是什么问题,我该如何解决?
答案 0 :(得分:0)
您缺少<type>
周围的双引号:
When A data of "<type>" is received
答案 1 :(得分:0)
只是一些一般性建议。
在进行填充时,请使事情尽可能简单,着眼于清晰和简单,不要担心重复。
如果您编写了2个简单的场景,您的任务就会简单得多
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<div class="row">
<div class="col-6 py-5">
<form id="contact-form" method="post" action=".." role="form">
<div class="controls">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="form_name">Firstname *</label>
<input id="form_name" type="text" name="name" class="form-control" placeholder="Please enter your firstname *" required="required" data-error="Firstname is required.">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="form_lastname">Lastname *</label>
<input id="form_lastname" type="text" name="surname" class="form-control" placeholder="Please enter your lastname *" required="required" data-error="Lastname is required.">
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="form_email">Email *</label>
<input id="form_email" type="email" name="email" class="form-control" placeholder="Please enter your email *" required="required" data-error="Valid email is required.">
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="form_need">Please specify your need </label>
<select id="form_need" name="need" class="form-control" required="required" data-error="Please specify your need.">
<option value=""></option>
<option value="1">...</option>
<option value="2">...</option>
<option value="3">...</option>
<option value="Other">Other</option>
</select>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label for="form_message">Message *</label>
<textarea id="form_message" name="message" class="form-control" placeholder="Message for me *" rows="4" required="required" data-error="Please, leave us a message."></textarea>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="col-md-12">
<input type="submit" class="btn btn-success btn-send" value="Send message">
</div>
</div>
</div>
</form>
</div>
<div class="col-6 py-5">
<div id="googleMap"></div>
<script>
function myMap() {
var mapProp = {
center: new google.maps.LatLng(51.508742, -0.120850),
zoom: 5,
};
var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_KEY&callback=myMap"></script>
</div>
</div>
<!-- row-->
</div>
<!-- container-->
其次,不使用标签来运行您的功能,您还不需要标签。
如果避免场景概述,正则表达式,标签,转换等,则可以更有效地进行提示。Cucumber的主要功能是使用自然语言来清楚地表达自己。专注于此并保持简单...