小黄瓜场景的灵活性。
我在寻找可以构建更灵活场景的机制。小黄瓜场景的灵活性。
例如,对于在数据库中记录测试的存在,这两个非常相似的场景:
Scenario Outline: Testing query with 1 attribute with these 2 record in and another 2 out of result
Given I'm connected to <db> database
When I select <query> from database
Then Result should contain fields:
| <row> |
| <yes1> |
| <yes2> |
And Result should not contain fields:
| <row> |
| <no1> |
| <no2> |
Examples:
| db | row | yes1 | yes2 | no1 | no2 | query |
| 1 | model | 1013 | 1006 | 1012 | 1007 | "SELECT model FROM pc WHERE speed >= 3.0;" |
| 1 | maker | E | A | C | H | "SELECT maker FROM product NATURAL JOIN laptop WHERE hd >= 100;" |
Scenario Outline: Testing query with 2 attributes with these 2 record in and another 2 out of result
Given I'm connected to <db> database
When I select <query> from database
Then Result should contain fields:
| <rowA> | <rowB> |
| <yes1A> | <yes1B> |
| <yes2A> | <yes2B> |
And Result should not contain fields:
| <rowA> | <rowB> |
| <no1A> | <no1B> |
| <no2A> | <no2B> |
Examples:
| db | rowA | rowB | yes1A | yes1B | yes2A | yes2B | no1A | no1B | no2A | no2B | query |
| 1 | model | price | 1004 | 649 | 2007 | 1429 | 2004 | 1150 | 3007 | 200 | "SELECT model,price FROM product" |
| 2 | name | country | Yamato | Japan | North | USA | Repulse | Brit | Cal | USA | "SELECT name, country FROM clases" |
我希望能够写带属性的一般头号场景。如果测试行的数量不能确定,那将会很好。
我的梦想是写只有一个一般情况下:
Testing query with N attribute with these M record in and another L out of result
如何做到这一点的小黄瓜?是否可以用任何黑客?
简短的回答是,不是,小黄瓜不是灵活性,小黄瓜是关于具体的例子。具体例子是除了灵活性之外的所有东西
长的回答是:
你所描述小黄瓜的使用作为测试工具。然而,小黄瓜的目的不是为了测试。 Gherkin的目的是促进发展和需要特定行为的利益相关者之间的沟通。
如果你想测试一些东西,还有其他工具可以支持你想要的东西。任何测试框架都可以使用。我个人的选择是JUnit,因为我主要使用Java。
决定工具的试金石是谁,谁必须能够理解这一点?
如果答案是非技术人员,我可能会用非常具体的例子使用小黄瓜。具体的例子很可能不会比较数据库中的东西。具体的例子倾向于描述系统的外部可观察行为。
如果答案是开发者,那么我可能会使用一个测试框架,在那里我可以使用一种编程语言。这将允许您要求的灵活性。
就你而言,你需要一种编程语言。小黄瓜和黄瓜不适合您的情况。
您可以在没有任何黑客行为的情况下做到这一点,但我不认为您希望这样做,至少不需要单一行中的整个场景。
你会想要遵循BDD结构,否则为什么要使用BDD?
你应该有,并按照如下的结构:
Given
When
Then
您需要拆分并具有初始上下文,动作(S)和结果(S)之间的界限。它会是一个不好的做法,不这些之间有一个限制。
另请注意,清晰的定界会增加可重用性,可读性并且在调试过程中也有很大帮助。
请做一个关于BDD的含义及其如何帮助的研究,如果您有一个BDD最佳实践清单,也可能有助于代码审查自动化方案,可能会有所帮助。