Django + bdd + 硒
Django + bdd + selenium
我正在使用 BDD 功能来描述我们的一些项目。大多数场景都是使用 django 测试客户端 https://docs.djangoproject.com/en/1.10/topics/testing/tools/ 实现的,但有些场景正在通过 selenium 进行测试。理论上,其中一些功能可以通过两种方法(通过 selenium 和测试客户端)进行测试,但我不知道如何从编码的角度来处理这个问题。我想让我的 bdd 场景实现免费(不像 "Given I am using selenium as test tool")。
我正在考虑在可行的情况下对每个步骤进行多个定义,然后使用针对给定场景实现所有步骤的实现(或什至更多)。我猜这将需要更改 python-behave 实现。有人面临类似问题吗?
编辑:
我发现的第一件事是使用阶段并为 "stage" 设置每个实现:
https://pythonhosted.org/behave/new_and_noteworthy_v1.2.5.html#test-stages
这可以有点解决我的问题,我可以 运行 测试每个阶段。唯一要解决的是特定于实现(阶段)的功能。最坏的情况我可以做虚拟的传递步骤。
所以我解决了这个问题,使用每个实现的阶段(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 一起使用(就像我一样),您将无法正确看到所有结果(一些被设置为跳过,而实际上它们更早通过了)。但总的来说,至少在出现测试错误时构建失败,这对我来说是主要的。
我正在使用 BDD 功能来描述我们的一些项目。大多数场景都是使用 django 测试客户端 https://docs.djangoproject.com/en/1.10/topics/testing/tools/ 实现的,但有些场景正在通过 selenium 进行测试。理论上,其中一些功能可以通过两种方法(通过 selenium 和测试客户端)进行测试,但我不知道如何从编码的角度来处理这个问题。我想让我的 bdd 场景实现免费(不像 "Given I am using selenium as test tool")。
我正在考虑在可行的情况下对每个步骤进行多个定义,然后使用针对给定场景实现所有步骤的实现(或什至更多)。我猜这将需要更改 python-behave 实现。有人面临类似问题吗?
编辑:
我发现的第一件事是使用阶段并为 "stage" 设置每个实现: https://pythonhosted.org/behave/new_and_noteworthy_v1.2.5.html#test-stages 这可以有点解决我的问题,我可以 运行 测试每个阶段。唯一要解决的是特定于实现(阶段)的功能。最坏的情况我可以做虚拟的传递步骤。
所以我解决了这个问题,使用每个实现的阶段(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 一起使用(就像我一样),您将无法正确看到所有结果(一些被设置为跳过,而实际上它们更早通过了)。但总的来说,至少在出现测试错误时构建失败,这对我来说是主要的。