Python BDD框架比较:优点和缺点

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



几乎所有主要的编程语言都具有用于BDD测试的框架, Python也不例外。 实际上,他有几个! 那么,您如何比较它们?哪个是最好的? 让我们尝试找出答案。


表现


行为是最受欢迎的BDD python框架之一。 尽管实际上它不是Cucumber项目的正式组成部分,但其功能与Cucumber框架非常相似。


资料来源:



商标



优点:


  • 完全支持Gherkin语言;
  • 环境和固定装置的功能使安装和拆卸变得容易。
  • 与Django和Flask集成在一起;
  • 受BDD pythonists的欢迎;
  • 良好的文档和手册;
  • 有对PyCharm Professional Edition的支持。

缺点:


  • 不支持并行执行,这需要一个单独的行为并行框架。
  • 行为是一个独立的框架;
  • 在功能文件之间共享步骤可能很麻烦。

pytest-bdd


pytest-bdd是一个pytest插件,允许用户将测试编写为Gherkin功能文件而不是测试功能。 由于它已集成到pytest中,因此可以与任何其他pytest插件配合使用,例如pytest-html用于创建漂亮的报告,而pytest-xdist用于并行测试。 它还使用pytest固定装置注入依赖项。


资料来源:



商标



优点:


  • 与pytest及其主要插件完全兼容;
  • 您可以享受pytest社区的所有好处;
  • 夹具是在步骤之间管理上下文的一种好方法。
  • 测试可以过滤并与其他pytest测试一起运行;
  • 步骤和钩子定义可以使用conftest.py轻松共享。
  • 表格数据可以更好地处理数据驱动的测试
  • 优秀的在线文档和教程;
  • 有对PyCharm Professional Edition的支持。

缺点:


  • 步骤定义模块必须具有针对功能文件的显式声明(通过“ @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框架是什么? 请分享评论!

Source: https://habr.com/ru/post/zh-CN460046/


All Articles