1

我正在使用 BDD 功能来描述我们的一些项目。然后使用 django 测试客户端https://docs.djangoproject.com/en/1.10/topics/testing/tools/实现大多数场景,但有些场景正在通过 selenium 进行测试。理论上,其中一些功能可以通过两种方法(通过 selenium 和测试客户端)进行测试,但我不知道如何从编码的角度来解决这个问题。我想让我的 bdd 场景实现免费(没有像“鉴于我使用 selenium 作为测试工具”)。

我正在考虑在可行的情况下对每个步骤进行多个定义,然后使用针对给定场景实现所有步骤的实现(甚至更多)。我猜这将需要更改 python-behave 实现。任何人都面临类似的问题?

编辑:

我发现的第一件事是使用阶段并为“阶段”设置每个实现: https ://pythonhosted.org/behave/new_and_noteworthy_v1.2.5.html#test-stages 这可以解决我的问题,我可以运行测试每个阶段。唯一要解决的是特定于实现(阶段)的功能。在最坏的情况下,我可以进行虚拟传递步骤。

4

1 回答 1

1

所以我使用每个实现的阶段(django,selenium)+标记每个功能,然后使用相应的阶段+标签对运行来解决这个问题。前任:

python mnage.py behave --tags=selenium --stage=selenium

https://pythonhosted.org/behave/new_and_noteworthy_v1.2.5.html#test-stages https://pythonhosted.org/behave/gherkin.html#tags

编辑:这个解决方案有一个更大的缺点 - 报告只包含上次运行的结果,所以如果你例如将它与 jenkins 一起使用(就像我一样),你不会正确看到所有结果(有些被设置为跳过,而实际上它们通过了较早)。但总的来说,当出现测试错误时,至少构建会失败,这对我来说很重要。

于 2016-10-26T16:03:15.030 回答