大家好 这个月,Python QA Engineer课程已经从OTUS开始。 期待本课程的开始,我们正在与您分享有趣的材料的翻译。

几乎所有主要的编程语言都具有用于BDD测试的框架, Python也不例外。 实际上,他有几个! 那么,您如何比较它们?哪个是最好的? 让我们尝试找出答案。
表现
行为是最受欢迎的BDD python框架之一。 尽管实际上它不是Cucumber项目的正式组成部分,但其功能与Cucumber框架非常相似。
资料来源:
商标

优点:
缺点:
- 不支持并行执行,这需要一个单独的行为并行框架。
- 行为是一个独立的框架;
- 在功能文件之间共享步骤可能很麻烦。
pytest-bdd
pytest-bdd是一个pytest插件,允许用户将测试编写为Gherkin功能文件而不是测试功能。 由于它已集成到pytest中,因此可以与任何其他pytest插件配合使用,例如pytest-html用于创建漂亮的报告,而pytest-xdist用于并行测试。 它还使用pytest固定装置注入依赖项。
资料来源:
商标

优点:
缺点:
- 步骤定义模块必须具有针对功能文件的显式声明(通过“ @scenario”或“ scenarios”功能);
- 方案计划应以不同的方式处理。
萝卜
萝卜是一个突出的BDD框架:它为Gherkin语言添加了新的语法。 诸如脚本循环,脚本先决条件和常量之类的语言功能使Gherkin的萝卜更适合测试用例。
资料来源:
商标

优点:
- Gherkin语言扩展使测试人员可以更好地编写测试;
- 网站,文档和徽标-一切就绪;
- 功能文件和步骤定义非常清晰。
缺点:
- 它是一个独立的框架,具有数量有限的扩展。
- BDD纯粹主义者可能不喜欢添加Gherkin语法。
生菜
生菜是另一个众所周知的BDD Python框架,已经有好几年了。 但是,他的网站和代码很长一段时间都没有更新。
资料来源:
徽标:

优点:
缺点:
- 不像其他框架那样丰富的功能;
- 他似乎没有积极的持续支持。
清新
Freshen是使用Python进行BDD测试的首批框架之一。 他是鼻子的插件。 但是,不再支持“新鲜”和“鼻子”功能,它们的文档页面明确指出了其他框架的使用。
推荐建议
上述框架都不是完美的,但其中许多具有明显的优势。 通常,我建议您使用pytest-bdd,因为它具有pytest的所有优点。 我相信pytest的简洁性,固定性,断言和插件是在任何语言中进行测试的最佳框架之一。 2018年Python开发人员调查显示pytest是最流行的Python测试框架。 尽管pytest-bdd看起来并不像行为那样优美,但我相信一些来自开源社区的TLC可以解决此问题。
以及更多建议:
- 如果您需要可靠,干净的开发经验和庞大的社区,请使用行为。
- 如果您需要与已经包含一堆pytest测试的其他插件集成,或者需要并行运行测试,请使用pytest-bdd。
- 如果要对Gherkin级别的测试进行更多的软件控制,请使用萝卜。
- 不要使用生菜和新鲜。
您最喜欢的BDD框架是什么? 请分享评论!