我想测试添加事件的路线。但问题是:这个方法在POST中发送了很多关于:50的参数。我试过了:
Scenario Outline: Check Api Simple Test
Given I use http method "POST"
And I have param "sEventType" with value "<sEventType>"
And I have param "aFilters[]" with value "<aFilters[]>"
And I have param "nCompany" with value "<nCompany>"
..................................................
And I call url "<path>"
And I should to have "code" with value "<code>"
And I should to have "error" with value "<error>"
Examples :
|path ........
|..............
对于很多参数,这个例子会使这个特征难以辨认。使用多个参数测试此路由的最佳做法是什么。请帮助我,并提前致谢!
答案 0 :(得分:2)
具有很长步骤列表的功能测试是一种反模式。在每个步骤中执行更多操作,使用代码编写,然后根据需要重新使用这些步骤。我有一些功能上下文,只需引入一些可以协同工作以完成我需要的特征。
有时,代码可以是web-steps的列表(我有一个注册函数是访问('url')fillFields(),pressButton()),有时它们会读或写到数据库。
Scenario Outline: Check Api Simple Test
Given I prepare an API with appropriate parameters
When I call url "<path>"
Then I should to have "code" with value "<code>"
And I should to have "error" with value "<error>"
答案 1 :(得分:0)
对于验收测试而言,您正在尝试的内容称为集成测试。
如果您希望发布这些帖子,请访问(网址),可选择填写表格然后提交。这正是您的用户填写表单的方式。如果对你来说太过分了,也许这对你的用户来说太过分了。
When I fill in "form_element_name" with "value"
And I press "submit"
Then I should see "resultz"
如果这确实是您所需要的,请创建一个“发布大量变量”的步骤定义,并在上下文文件中实现详细信息。
当它只是一个api-endpoint时,我会使用集成测试对控制器进行测试。
答案 2 :(得分:0)
或者,你可以使用TableNodes(我知道我在聚会上有点迟了),但实际上,如果你使用类似这样的代码:
/**
* @Then /^I have the following param(?:|eter)s with values:$/
*/
public
function iHaveTheFollowingParamsWithValues(TableNode $table)
{
foreach ($table->getRowsHash() as $param => $value) {
$this->iHaveParamWithValue($param, $value);
}
}
和
/**
* @Then /^I should have the following codes with values:$/
*/
public
function iShouldHaveTheFollowingCodesWithValues(TableNode $table)
{
foreach ($table->getRowsHash() as $code => $value) {
$this->iShouldHaveCodeWithValue($code, $value);
}
}
它将调用您声明的函数,并允许您在表格中写入数据,就像场景大纲的示例表一样。
如:
Scenario Outline: Check Api Simple Test
Given I use http method "POST"
And I have the following params with values:
|sEventType|<sEventType>|
|aFilters[]|<aFilters[]>|
|nCompany |<nCompany> |
..................................................
And I call url "<path>"
And I should have the following codes with values:
|code |<code> |
|error|<error>|
Examples :
|path ........
|..............
这应该有助于提高可读性,并加快测试编写和测试执行的速度。