BDD 标记 
在Markdown中写入BDD测试.
思想
写入 BDD 测试应该更舒适 比这, (中文(简体) ), 为什么不用Markdown? 它可以看着 像这样。 。 。 .
- 它是一个支持良好的文档格式,许多工具如自动格式 已经存在
- 它为构建分级文件提供了良好的工具
- 它支持嵌入源代码/ JSON 有效载荷,甚至表格
- 前置物质可用于特性级配置
历史
原BDD e2e特性跑道工程于2018年开工,该项目已经 证明对试验云内溶液非常有用。 更多关于 原创创意 这里。 。 。 . 然而,执行工作有一些缺陷。 特别是理解测试 成果以及处理状态和重复的方式并不理想。 临Τ 旧密码库本身没有足够覆盖 测试。 因此,这个 该项目于2022年启动,有4年的写作经验 运行测试。 有了一双新眼睛,写字的方法就完成了 从Gherkin改为Markdown 要求独立释放 项目.
实例
- 支持语法的解析
- 盖克金
Rule关键词 - 火星漫游者卡塔 (这个)
显示
Soon重试步骤的关键字)
运行 :$(set -o pipefail && node --no-warnings examples/mars-rover/tests.ts | node --no-warnings reporter/console-cli.ts) - 固件 UART 日志断言
(这证明使用
Context,这是一个全球对象 可供为测试运行提供运行时间设置,以替换 在阶梯标题和代码块中的占位符。 )
运行 :$(set -o pipefail && node --no-warnings examples/firmware/tests.ts | node --no-warnings reporter/console-cli.ts)
使用 Soon 关键词
让我们来看看这个情景:
# To Do List
## Create a new todo list item
Given I create a new task named `My item`
Then the list of tasks should contain `My item`
如果您正在测试一个待办事宜列表系统, 那最终会一致吗 ?
更具体地说: 创建一个新任务是通过 POST 请求
返回 a 的 API 202 Accepted 状态代码.
系统不能保证你刚刚创造的任务 马上 可用.
这个 Then 断言将失败,因为它立即被执行.
为了测试最终一致的系统,我们需要等待一个合理的 足够时间或重试断言.
但是,如果你的测试套房里有很多类似的断言, 很快就会 加上长期时间.
因此,最有效的解决办法是重试这一说法,直到它过去, 或时出. 这样可以使用后退算法等待增加 更长时间,很多尝试 在测试运行期间,将拥有最少的量 对运行时间的影响.
执行适当的重新试验方式留待执行步骤,
不过,鼓励您使用下列方法标示这些最终步骤:
Soon 关键词.
通过依赖关系控制特性执行命令
默认情况下, 这些特性不会按特定顺序加载 。 你个 可能 试图 命令他们使用命名惯例,但可以强制进行排序 ,随着时间的推移,文件可能需要重新命名,以腾出空间 新的特性.
在此工程中, 特性可以指定对一个或多个其它特性的依赖性 ,在解析所有特性文件后,它们将被排序 地形学。 。 。 .
特征可以通过 needs 关键字 :
---
needs:
- First feature
---
# Second
## Scenario
Given this is the first step
此特性将在带有名称的特性后运行 First feature
运行中的特性 第一个 财务报告和审定财务报表 最后一个
此外,功能可以指定是否应在所有其他功能之前运行 特征,或者毕竟。 多个关键字可以有此旗帜, 但依赖性 将优先.
示例:在所有其他特性之前运行一个特性
---
order: first
---
# Runs before all others
## Scenario
Given this is the first step
示例:在所有其他特性之后运行一个特性:
---
order: last
---
# Runs before all others
## Scenario
Given this is the first step
跳过特性
特性可以跳过, 这也会跳过所有依赖和瞬间 依赖性特性.
示例: 跳过一个特性
---
run: never
---
# This feature never runs
## Scenario
Given this is the first step
只运行特定特性
功能可以完全运行, 这将运行所有依赖和
短暂的依赖性特征. 所有其他未标记为 run: only
将被跳过.
示例:只运行一个特定特性
---
run: only
---
# This feature runs, all other features are skipped
## Scenario
Given this is the first step
备选案文
变体(在特性的前题所定义)可用于运行相同的 特性在不同变体中。 对于每个变体条目,特性文件是 运行。 (示例(中文(简体) )
JSON 的占位数
对于JSON代码块,有一个特殊的标记来替换数字占位符, 保留 JSON 语法并允许像更美的格式 以格式化代码块.
Given `v` is the number `42`
And I store this in `result`
```json
{ "foo": "$number{v}" }
```
Then `result` should match
```json
{ "foo": 42 }
```
标记下报员
它包括一个减记记者, 将套件结果变成减记, 适合显示为 GitHub 动作任务摘要。 。 。 .
示例 火星漫游者报告
节点和国家预防机制
这个项目需要节点.js >=24.19.0 <25 页:1 >=12.0.2 <13 (强制执行)
通过 check-node-version 打开 npm install 财务报告和审定财务报表 npm ci) (中文(简体) ).
检查时跳过 npm publish 财务报告和审定财务报表 npm pack,因为
semantic-release 捆绑自己的npm(@semantic-release/npm 取决于
npm@^11.6.2)并使用该版本而不是该版本运行出版物
安装于 CI.
类型脚本 6和 7
此还原 并行运行类型脚本 6和 7, (中文(简体) ), 这样,斯林特工作。 。 。 .