问题标签 [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.
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.
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 进行这项工作的任何方法,我很想知道。提前致谢。
python - 使用行为(python)定义场景(或所需场景)的顺序
我正在使用行为来测试我的小 Django 应用程序。
我已经创建了user_management.feature
包含这个场景的文件:
一切正常。
我要开发的下一个功能在文件中project_management.feature
:
现在,当我执行测试时,behaviour 按字母顺序执行功能文件,因此project_management.feature
首先执行。
它在第一个中引发错误given
,因为尚未创建用户。
我已经测试了重命名第一个文件01_user_management.feature
以使其工作。
你知道更好的解决方案吗?
是否有一些配置文件可以指定功能文件的顺序?
或者我可以告诉一个场景需要另一个场景你先运行吗?
python - 多处理管理器似乎正在阻止环境变量更改
我使用行为来运行我们基于小黄瓜的测试套件,并使用一个自定义运行器来处理并行运行行为。
这在我的本地(Windows 8.1)机器上完美运行,并允许我使用 os.environ.update 在我的子进程中更改环境变量
这在我们的 Ubuntu 14.04 服务器上失败,并且无法更改环境变量,这与每个测试运行的数据库名称一致。我正在做的一些剥离代码如下:
在行为内部,我们使用数据库来测试我们的 Flask 应用程序。Flask 运行时找不到设置的环境变量。
编辑:我不知道发生了什么变化,我们在服务器和我的机器上使用相同版本的 Python,以及所有已知使用过的软件包的相同版本。环境变量未正确更新,因此无法在以后的代码中访问。
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
python - 行为(BDD)AmbiguousStep 错误
开始玩Behave BDD 测试,我发现没有步骤定义命名空间的东西,这很容易导致 AmbiguousStep 异常。这里有哪些最佳实践?我认为当您的测试项目越来越大时,这将是一个问题。
这是我正在尝试做的事情:
特点一:
特点2:
foo4feature1.py:
bar4feature2.py:
我的两个功能(功能 1和功能 2)都采取了行动。这两个步骤在它们的场景中具有不同的含义。他们只是碰巧同名(例如,采取行动)。我知道我可以仔细选择步骤的名称(例如,在feature2中使用“采取 f2 行动”而不是“采取行动” )以避免冲突。然而,在一个大型测试项目中,您不能确保每个人都记住其他人功能中的步骤名称。作为 BDD 方面的新手,我正在寻找可以遵循的最佳实践来处理这个问题。
python - 跳过步骤实现中的行为步骤
有没有办法告诉在步骤实现中的行为以跳过当前步骤?
就像是:
用例是我想检查是否安装了一些附加软件。如果没有,我希望跳过完整的场景。
python - 如何使用一些单元测试框架运行 Python & Behave 测试?
我需要在不使用控制台的情况下运行我的测试(用 Python 和 Behave 编写)。我更喜欢创建简单的 Python 脚本并使用一些单元测试运行器。我正在考虑 unittest,但也欢迎 pytest 和鼻子解决方案:) 我在行为的主页上找不到任何提示。
python - 在行为上,你如何只运行一个场景?
我有一个“行为”功能,上面有很多测试。
我只需要运行一个特定的场景来满足开发需求。
我该怎么做?
(最好在命令行上)
python - 如何使用 Behave 生成 junit 报告
我尝试使用控制台和配置文件来生成 JUnit 报告 - 没有任何成功。更准确地说,我TESTS-features.forms.xml
在reports
文件夹中得到空文件。我试图更改报告的默认文件夹 - 没有任何运气。也有pretty.output
,但它是来自控制台的日志。
这是屏幕截图:
我的目标是获取一些 Jenkins 插件(如 Cucumber Reports)可以处理的报告。
这是我的行为.ini:
也许有人可以为我提供工作示例,我说的是配置文件?欢迎任何帮助!