目标: 我想知道在运行我的测试套件时我有多少测试。
我试图获得以BDD样式编写的测试场景的总数,并在控制台中打印该数字。 所有测试文件都在./features目录中。有子目录(所以我需要递归搜索) 一些测试被评论(使用#)
Simple scenario looks like that:
Scenario: blah-blah-blah
Given blah
When blah bloh
Then bluh bluh
这非常简单,充当魅力:
grep -r "^\s*Scenario:" ./features/ | wc -l
棘手的部分是可以进行具有"场景概要"关键词。在测试的底部,有一个带有示例的表格。 场景可能如下所示:
Scenario Outline: blah
Given blah <score>
When bloh <performance>
Then blah-bloh-bluh <completion>
Examples:
| score | performance | completion |
| 4/4 | 100 | 50 |
| 3/4 | 75 | 50 |
| 4/4 | 100 | 5 |
在第一行我们有标题 - 我们不应该计算它们。所以,在这种情况下,我们有3个测试。 到目前为止,我已经完成了类似的事情:
find ./features -type f -exec sed -n -e '/Scenario Outline/,/Scenario/ p' {} + | grep \| | wc -l
不幸的是,有两个问题我无法弄清楚:
感谢您的一切建议!
答案 0 :(得分:1)
我不确定管道是否可以出现在文件中的任何其他位置,但如果不是,则以下命令将在跳过第一行时计算以 Scenario 开头的所有行和所有表行。
find ./features -type f -print0 | \
xargs -0 awk '/^\s*Scenario:/; /\|/ { if (intable) print; intable=1 } intable && $0 !~ /\|/ { intable=0 }' | \
wc -l