如何在 python 中编写黄瓜步骤定义

How to write cucumber Step definitions in python

我是 Cucumber 框架的新手。我正在尝试让 Cucumber 与 Python 一起工作。我已经编写了功能文件,想知道如何在 Python.

中编写步骤定义

我在互联网上搜索并找到 Ruby 语言的步骤定义,但没有找到 Python 的步骤定义。甚至可以 运行 黄瓜与 Python?

Cucumber 目前支持 14 种语言,包括 Python 在 JVM 上也称为 Jython。

我将从阅读 Cucumber-JVM 开始,它是 JVM 的 Cucumber 实现。要使用Java 6/7 所以你可以使用Cucumber API。您需要编写带有 Java 注释的 Python 方法,以告诉 Cucumber 哪些正则表达式与每个方法相关。

这听起来很间接,但相当直接:

小黄瓜:

Scenario: Some cukes
  Given I have 48 cukes in my belly

Python/Jython:

@Given('^I have (\d+) cukes in my belly')
def i_have_cukes_in_my_belly(self, cukes):
   print "Cukes: " + cukes

这是从每个代码示例角落的 cucumber reference page 复制的(不是小黄瓜,而是步骤定义),您可以 select 选择您的语言。

文档不完整,但完整的地方很有用。它确实包括 entry for your maven config if you are using that and most of the information needed for basic use. Any documentation you find elsewhere on the web for cucumber in Java should work with Jython as long as you are familiar with calling Java from Jython.

查看 behave,行为驱动开发库,Python 风格。

Behavior-driven development (or BDD) is an agile software development technique that encourages collaboration between developers, QA and non-technical or business participants in a software project. We have a page further describing this philosophy.

behave uses tests written in a natural language style, backed up by Python code.

它不使用 Cucumber,但您可以重复使用 .feature 个文件,因为它们使用相同的 Gherkin 语言。

示例行为的步骤定义:

from behave import *

@given('we have behave installed')
def step_impl(context):
    pass

@when('we implement a test')
def step_impl(context):
    assert True is not False

@then('behave will test it for us!')
def step_impl(context):
    assert context.failed is False