Python Cucumber BDD package: Idiomatic way to inject the functionality that you would like to test
我已经在此处的Udemy上完成了使用Python Cucumber进行BDD的教程。
但是,在这些课程中,导师使用已经实现的功能来实现步骤定义。对我而言,这违背了BDD的宗旨。我想先编写测试,然后再编写使测试通过的代码。
我尝试执行此操作的方法是使用配置文件,即
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")() |
编写完所有测试后,就可以编写
1 2 3 4 5 | From CoreLogic import CoreLogic myFunctionality = { "doMyThing" : lambda : CoreLogic.doMyThing() } |
这意味着我可以为我的原型和最终实现使用相同的Cucumber测试集。我要做的就是编辑配置文件。
这是解决这个问题的好方法吗?当然这是一个非常常见的用例,那么人们通常如何将他们想要测试的功能注入Cucumber?
谢谢。
步骤定义不是测试。黄瓜方案是测试。没有什么可以阻止您编写没有步骤定义的方案。
某些BDD框架将通过未执行的步骤使测试失败。为了避免这种情况,请以一种新的方式对每个新步骤进行打桩,以便将测试标记为"待定"或"不确定"。这样,在您实现应用程序基础结构以支持步骤定义时,持续集成构建将继续进行。