问题标签 [python-behave]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
802 浏览

python - How are Behave's decorators created/declared?

I am currently using Behave (BDD for Python) and have been digging in the source code to understand how the @given, @when and @then decorators are being declared.

The farthest I've gone is to look at step_registry.py where I found the function setup_step_decorators(context=None, registry=registry) which appears to be doing the job.

However, I don't quite understand how these decorators are created since they don't appear to be explicitly declared in the source code in the form of a def when(...):. I am under the impression that they are declared based on a list of strings (for step_type in ('given', 'when', 'then', 'step'):) that is then processed by a call to make_decorator().

Can someone walk me through the code and explain where/how these decorators are being declared?

Here is where you can get access to the source code of Behave.

0 投票
3 回答
1463 浏览

python-2.7 - Behave (BDD) 是否适用于 Python 3.4?

我正在使用Behave (BDD for Python) 并且一直在尝试启用 JUnit 输出但没有成功。故障排除后,我意识到只有在使用Python 3.4时才会收到以下错误消息:

当我将项目更新为使用 Python 2.7 时,一切正常。

这是一个重要的注意事项:这只会在我在behave.ini配置文件中启用 JUnit 输出时造成问题。如果我从配置中取出下面的两行,一切都会好起来的。不幸的是,我需要为我的项目启用 JUnit 输出:

如果您知道我可以使用 Python 3.4 进行这项工作的任何方法,我很想知道。提前致谢。

0 投票
4 回答
6751 浏览

python - 使用行为(python)定义场景(或所需场景)的顺序

我正在使用行为来测试我的小 Django 应用程序。

我已经创建了user_management.feature包含这个场景的文件:

一切正常。

我要开发的下一个功能在文件中project_management.feature

现在,当我执行测试时,behaviour 按字母顺序执行功能文件,因此project_management.feature首先执行。

它在第一个中引发错误given,因为尚未创建用户。

我已经测试了重命名第一个文件01_user_management.feature以使其工作。

你知道更好的解决方案吗?

是否有一些配置文件可以指定功能文件的顺序?

或者我可以告诉一个场景需要另一个场景你先运行吗?

0 投票
2 回答
934 浏览

python - 多处理管理器似乎正在阻止环境变量更改

我使用行为来运行我们基于小黄瓜的测试套件,并使用一个自定义运行器来处理并行运行行为。

这在我的本地(Windows 8.1)机器上完美运行,并允许我使用 os.environ.update 在我的子进程中更改环境变量

这在我们的 Ubuntu 14.04 服务器上失败,并且无法更改环境变量,这与每个测试运行的数据库名称一致。我正在做的一些剥离代码如下:

在行为内部,我们使用数据库来测试我们的 Flask 应用程序。Flask 运行时找不到设置的环境变量。

编辑:我不知道发生了什么变化,我们在服务器和我的机器上使用相同版本的 Python,以及所有已知使用过的软件包的相同版本。环境变量未正确更新,因此无法在以后的代码中访问。

0 投票
2 回答
4100 浏览

python - 如何使用行为设置环境变量(Python BDD 框架)?

因此,我们的测试环境会根据我们正在处理的版本动态变化。

例如:

  • 对于 abc 版本,测试环境的 URL 是 feature-abc.mycompany.com,对于 xyz 版本,测试环境的 URL 是 feature-xyz.company.com 等等。
  • 登台也是如此:release-abc.mycompany.com、release-xyz.mycompany.com 等。
  • 生产只是静态 URL:platform.mycompany.com

话虽如此,我需要指定我希望使用 Python 的行为 BDD 框架在哪个 URL 上执行测试。

具体来说,我正在寻找 cucumber 对 Ruby 使用的等效功能: features/support/env.rb 文件来定义多个 URL(qa、staging、production 等),以便在命令行(终端)上我只是说 xyz (有 qa = feature(the release).mycompany.com

类似于:如何在 Cucumber 中测试不同的环境(例如开发|测试|生产)?

0 投票
3 回答
1754 浏览

python - 行为(BDD)AmbiguousStep 错误

开始玩Behave BDD 测试,我发现没有步骤定义命名空间的东西,这很容易导致 AmbiguousStep 异常。这里有哪些最佳实践?我认为当您的测试项目越来越大时,这将是一个问题。

这是我正在尝试做的事情:

特点一:

特点2:

foo4feature1.py:

bar4feature2.py:

我的两个功能(功能 1功能 2)都采取了行动。这两个步骤在它们的场景中具有不同的含义。他们只是碰巧同名(例如,采取行动)。我知道我可以仔细选择步骤的名称(例如,在feature2中使用“采取 f2 行动”而不是“采取行动” )以避免冲突。然而,在一个大型测试项目中,您不能确保每个人都记住其他人功能中的步骤名称。作为 BDD 方面的新手,我正在寻找可以遵循的最佳实践来处理这个问题。

0 投票
3 回答
6017 浏览

python - 跳过步骤实现中的行为步骤

有没有办法告诉在步骤实现中的行为以跳过当前步骤?

就像是:

用例是我想检查是否安装了一些附加软件。如果没有,我希望跳过完整的场景。

0 投票
1 回答
854 浏览

python - 如何使用一些单元测试框架运行 Python & Behave 测试?

我需要在不使用控制台的情况下运行我的测试(用 Python 和 Behave 编写)。我更喜欢创建简单的 Python 脚本并使用一些单元测试运行器。我正在考虑 unittest,但也欢迎 pytest 和鼻子解决方案:) 我在行为的主页上找不到任何提示。

0 投票
3 回答
27770 浏览

python - 在行为上,你如何只运行一个场景?

我有一个“行为”功能,上面有很多测试。

我只需要运行一个特定的场景来满足开发需求。

我该怎么做?

(最好在命令行上)

0 投票
1 回答
2231 浏览

python - 如何使用 Behave 生成​​ junit 报告

我尝试使用控制台和配置文件来生成 JUnit 报告 - 没有任何成功。更准确地说,我TESTS-features.forms.xmlreports文件夹中得到空文件。我试图更改报告的默认文件夹 - 没有任何运气。也有pretty.output,但它是来自控制台的日志。

这是屏幕截图: 在此处输入图像描述

我的目标是获取一些 Jenkins 插件(如 Cucumber Reports)可以处理的报告。

这是我的行为.ini:

也许有人可以为我提供工作示例,我说的是配置文件?欢迎任何帮助!