下面的Gherking测试为我的一个服务器定义了所需的行为:
Scenario Outline: Calling the server with a valid JSON
Given A GIS update server
When I call /update with the json in the file <filename>
Then the response status code is <status_code>
And the response is a valid JSON
And the response JSON contains the key status
And the response JSON contains the key timestamp
And the response JSON contains the key validity
Examples:
| filename | status_code |
| valid_minimal.json | 200 |
| valid_minimal_minified.json | 200 |
| valid_full.json | 200 |
| valid_full_minified.json | 200 |
| valid_full_some_nulls.json | 200 |
| valid_full_all_nulls.json | 200 |我编写了这段代码,用于对Flask服务器进行单元测试。步骤文件解释Gherkin指令,打开测试客户端并进行必要的调用和断言:
@given(u'A GIS update server')
def step_impl(context):
context.app = application.test_client()该特性文件类似于单元测试和功能测试。唯一的区别是在几个步骤文件中,它必须进行HTTP调用,而不是调用测试客户端的方法。
通过将参数传递给步骤文件,重用这个behave 功能文件的正确方法是什么?
发布于 2014-05-19 20:23:29
扩展Parva的评论后,我建议通过命令行发送参数,这些参数将在步骤定义中检测到,并调整单元测试和功能测试的行为(是否将单元测试和功能测试分开以确保清晰性的决定由您决定;)
在围绕调试错误的行为文档中给出了一个示例,它提供了在修改steps方法的执行时使用环境属性的一个很好的示例:
# -- FILE: features/environment.py
# USE: BEHAVE_DEBUG_ON_ERROR=yes (to enable debug-on-error)
from distutils.util import strtobool as _bool
import os
BEHAVE_DEBUG_ON_ERROR = _bool(os.environ.get("BEHAVE_DEBUG_ON_ERROR", "no"))
def after_step(context, step):
if BEHAVE_DEBUG_ON_ERROR and step.status == "failed":
# -- ENTER DEBUGGER: Zoom in on failure location.
# NOTE: Use IPython debugger, same for pdb (basic python debugger).
import ipdb
ipdb.post_mortem(step.exc_traceback)您可以对此进行更改,以检测已传递变量(如UNIT_TESTING )的命令行,并使其到达不同的端点,或为测试执行其他功能。
发布于 2015-02-20 22:58:24
要求:行为>= 1.2.5
我认为,试验阶段概念应该可以帮助您满足您的需求。它允许您为不同的测试阶段使用不同的步骤实现。
behave --stage=functional如果您的更改很小,请使用用户数据概念将一个标志传递给步骤实现,如下所示:
behave -D test_stage=unit …
behave -D test_stage=functional …https://stackoverflow.com/questions/22603283
复制相似问题