问题标签 [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 投票
1 回答
1043 浏览

python-behave - 如何在 python 行为步骤数据表中指定列的类型?

假设我有一个定义如下的步骤:

我有读取表并执行断言的步骤实现,如下所示:

(我这样做是因为这种方法允许添加更多字段,但保持其通用性足以用于检查汽车属性的许多用途)。

当我的汽车对象有 4 个门(作为 int)时,它不匹配,因为数据表要求有“4”个门(作为 unicode str)。

我可以实现这种方法来检查列的名称并对不同的字段进行不同的处理,但是当添加一个新字段时,维护变得更加困难,因为还有一个地方可以添加它。我宁愿在步骤数据表中指定它。就像是:

有没有类似的东西可以用来实现这一点(因为这不起作用)?

请注意,在某些情况下,我需要从遇到相同问题的数据表中创建。尝试使用“汽车”对象的类型来确定类型是没有用的,因为在这种情况下它是 None 。

谢谢,

拜尔

0 投票
1 回答
500 浏览

python - python-表现:生成步骤功能抛出列表索引超出范围

这是我在这里的第一个问题,所以欢迎任何关于改进的提示:)

我正在弄清楚如何使用 Sublime Text 3、python 和行为编写测试。

现在起作用的是我的功能文件被识别:据我所知,颜色都正确。

现在接下来我要生成阶跃函数。所需的行为是当我这样做时(右键单击函数==> 生成步进函数,或通过命令调色板,它会打开一个弹出窗口,我可以在其中指定我希望它创建一个新文件,并且然后创建该文件。

我得到的错误是:当我这样做时,它除了在控制台中抛出一些异常之外什么都不做:

我已经尝试了一些关于定义在包设置中行为的路径的建议,但这并没有帮助。

我对这些事情不是很有经验,因此非常欢迎任何详细的回答。

有任何想法吗 ?

0 投票
2 回答
648 浏览

python - Python Behave 的动态场景调度程序

我正在运行多个场景,并希望合并某种动态场景调度程序,这将允许我在基于执行的场景完成测试后执行特定的步骤。当我使用 PHPUnit 时,我曾经能够继承 TestCase 类并添加我自己的设置和拆卸方法。对于表现,我一直在做的是在场景结束时添加一个额外的“然后”步骤,一旦场景完成清理所有内容,就会执行该步骤 - 清理场景所做的配置更改等。但是由于每个场景不同的是,我需要进行的配置更改特定于某个场景,因此我无法使用 environment.py 文件中的 after_scenario 挂钩。关于如何实现类似的任何想法?

0 投票
1 回答
616 浏览

python - 如何在python行为步骤文件中只导入一次模块

我对 Python 和 Behave 非常陌生。在我的步骤文件中test_steps.py,我导入了以下内容:

如果我创建了另一个步骤文件,test2_steps.py我必须再次在上面导入。有没有办法避免这种情况?

谢谢您的帮助!

0 投票
2 回答
1090 浏览

python - 是否可以在 Django Behave 测试中进行模拟?

我看过很多关于带有模拟的单元测试的文章。

我有一个简单的结帐表格,可以将卡详细信息提交到支付网关。是否可以在行为测试中模拟支付网关响应?

我想知道,是否可以在行为测试中进行模拟?

0 投票
1 回答
2003 浏览

python - 在 python 行为中设置输出和格式,特别是在 environment.py

我可以使用 --format 和 --outfile 参数运行我的行为代码,并按预期工作。

这将为我提供 C:/results.json 中 json 格式的结果。

我想避免通过 behavior.ini 和命令行传递这些变量。我想在 enviroment.py 中设置这些变量,这样我就可以从任何地方简单地运行以下命令:

在 environment.py 文件中,我尝试了所有我能想到的组合,它们都归结为这三个变量,但没有运气。

为什么选择 StreamOpener?https://github.com/behave/behave/blob/master/behave/configuration.py 显示输出是 StreamOpener 对象的列表。

有人知道在 python-behave 中设置输出文件和格式化程序的正确方法吗?

0 投票
2 回答
1709 浏览

python - Large Scenario Outline tables without having to explicitly mention all parameters in the step definitons

In Python's behave library, I can write a feature file with a parametrised Scenario Outline like so (adapted from this tutorial):

The according step definitions would look like this:

As one can see, the way to pass the parameters from the feature file into the step functions is

  • by explicitly mentioning them in the feature file enclosed in angle brackets
  • then include the same words enclosed in curly brackets (why not angle brackets again?!) in the decorator of the step function
  • and finally insert these words as function arguments of the step function.

However, given a larger example table with a lot of columns, this quickly gets annoying to write and read:

I think the point is clear. Is there any possibility to transfer the examples from a large table into the step definition without having to mention all of them explicitly? Are they, for instance, saved somewhere in the context variable even without mentioning them in the text (could not find them there yet)?

0 投票
1 回答
92 浏览

gherkin - 如何在 Gherkin 测试中提示用户?

我们正在使用 Gherkin/Behave(在 Python 中)来测试嵌入式应用程序。Gherkin 代码在服务器上执行,而实际活动由设备上的应用程序执行,通过网络进行通信。设备上的应用程序需要手动启动。

我需要一个测试来重新启动设备。我可以让测试应用程序重新启动,但是我需要服务器上的代码提示用户重新启动测试应用程序,以便测试可以继续执行后续步骤。但是我无法在“步骤”文件中获取 Python 代码来输出任何文本。

我很欣赏 Gherkin/Behave 旨在提供完全自动化的测试,但现实世界的限制适用于此。

0 投票
1 回答
362 浏览

xml - python 行为生成“格式不正确”的 XML

我正在使用 python 运行大约 40 个测试。现在,我正在尝试为我自己和我的客户制作一个或多或少看起来不错的 HTML 报告。

我通过命令行运行测试:behave --junit. 接下来我获取 xml,解析它(元素树)并编写一个 html 文件。

基本上,我已经设法做到了,除了我必须手动编辑 xml,因为它有一些奇怪的字符。在我看来,这些字符真的不应该存在,并且还试图忽略它们(使用 recover=true,如ParseError: not well-formed (invalid token) using cElementTree例如)没有工作。(没有它,它会给我一条关于“格式不正确(无效令牌)”的消息,并且使用恢复选项它只会忽略奇怪字符之后的所有内容,从而产生非常短的测试报告)

有什么我想念的吗?也许在我的行为测试的组织或执行中产生了这个损坏的 XML 的结果?

也许只是了解它们是什么字符,所以我尝试编写代码来替换或删除它们,然后解析会有所帮助。

任何帮助表示赞赏!

欢呼,

这是一段带有这些奇怪字符的 XML:我看到在这里引用它已经使它的显示有所不同,所以我也添加了 sublimetext 的屏幕截图。在此处输入图像描述

0 投票
2 回答
2190 浏览

python - 通常如何处理 Python 行为或 BDD 场景中的迭代/循环?

我正在尝试使用 Python 的行为库在一堆分隔的文本文件上编写一些 BDD/Gherkin 样式测试。

一个典型的场景如下所示:

由于有很多文件并且每个文件都包含很多行,因此不可能将它们全部硬编码到场景大纲中。此外,我想避免一次将整个文件读入内存,而是使用生成器逐行迭代。

我尝试了以下。但是,这在大型数据集和大量条件下效率非常低,因为每then一步都会一遍又一遍地读取每一行。then是否有可能在多个步骤之间传递一行并从then第一步重新开始下一行?

还是 BDD/Gherkin 不适合这种测试?有什么替代方案?