0
目標: 我想知道在運行測試套件期間我有多少測試。如何awk滿足條件/省略一些行
我試圖獲得以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
不幸的是有兩個問題我無法弄清楚:
- 我們正在檢查該「方案綱要」之間存在的表和「情景」。當「場景大綱」是文件中最後一個測試(沒有更多場景,只有EOF)時,我的解決方案與案例不匹配。
- 我用'|'來計算每一行不管有沒有真正的數據或表頭。
感謝您的每一個建議!