Python Cucumber BDD软件包:惯用的方式来注入您要测试的功能

Python Cucumber BDD package: Idiomatic way to inject the functionality that you would like to test

我已经在此处的Udemy上完成了使用Python Cucumber进行BDD的教程。

但是,在这些课程中,导师使用已经实现的功能来实现步骤定义。对我而言,这违背了BDD的宗旨。我想先编写测试,然后再编写使测试通过的代码。

我尝试执行此操作的方法是使用配置文件,即Config.py

1
2
3
myFunctionality = {
   "doMyThing" : lambda : assert(false)
}

然后在步骤实现文件中:

1
2
3
4
5
from Config import Config

@when('We request to do my thing')
def step_impl(context):
context.result = Config.myFunctionality.get("doMyThing")()

编写完所有测试后,就可以编写doMyThing()的逻辑,然后只需编辑Config.py文件,即:

1
2
3
4
5
From CoreLogic import CoreLogic

myFunctionality = {
   "doMyThing" : lambda : CoreLogic.doMyThing()
}

这意味着我可以为我的原型和最终实现使用相同的Cucumber测试集。我要做的就是编辑配置文件。

这是解决这个问题的好方法吗?当然这是一个非常常见的用例,那么人们通常如何将他们想要测试的功能注入Cucumber?

谢谢。


步骤定义不是测试。黄瓜方案是测试。没有什么可以阻止您编写没有步骤定义的方案。

某些BDD框架将通过未执行的步骤使测试失败。为了避免这种情况,请以一种新的方式对每个新步骤进行打桩,以便将测试标记为"待定"或"不确定"。这样,在您实现应用程序基础结构以支持步骤定义时,持续集成构建将继续进行。