首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在单元测试和功能测试中重用Python的行为特性文件

在单元测试和功能测试中重用Python的行为特性文件
EN

Stack Overflow用户
提问于 2014-03-24 07:23:54
回答 2查看 1.9K关注 0票数 1

下面的Gherking测试为我的一个服务器定义了所需的行为:

代码语言:javascript
运行
复制
  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指令,打开测试客户端并进行必要的调用和断言:

代码语言:javascript
运行
复制
@given(u'A GIS update server')
def step_impl(context):
    context.app = application.test_client()

该特性文件类似于单元测试和功能测试。唯一的区别是在几个步骤文件中,它必须进行HTTP调用,而不是调用测试客户端的方法。

通过将参数传递给步骤文件,重用这个behave 功能文件的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-19 20:23:29

扩展Parva的评论后,我建议通过命令行发送参数,这些参数将在步骤定义中检测到,并调整单元测试和功能测试的行为(是否将单元测试和功能测试分开以确保清晰性的决定由您决定;)

在围绕调试错误的行为文档中给出了一个示例,它提供了在修改steps方法的执行时使用环境属性的一个很好的示例:

代码语言:javascript
运行
复制
# -- 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 )的命令行,并使其到达不同的端点,或为测试执行其他功能。

票数 1
EN

Stack Overflow用户

发布于 2015-02-20 22:58:24

要求:行为>= 1.2.5

我认为,试验阶段概念应该可以帮助您满足您的需求。它允许您为不同的测试阶段使用不同的步骤实现。

代码语言:javascript
运行
复制
behave --stage=functional

如果您的更改很小,请使用用户数据概念将一个标志传递给步骤实现,如下所示:

代码语言:javascript
运行
复制
behave -D test_stage=unit …
behave -D test_stage=functional …
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22603283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档