testing - Cucumber - Javascript 在其他步骤定义之前调用登录步骤定义

标签 testing bdd cucumberjs webdriver-io chimp.js

使用 Chimp.js、Cucumberjs 和 WebdriverIO,我尝试在浏览器实例中运行登录步骤定义,然后再执行其他依赖于用户登录的步骤定义。并且可能没有将它们添加到 背景 为每个特征文件一遍又一遍。

这可能吗?我对 Wedbdriver.io 和 Cucumber 很陌生,任何建议都会很有帮助。如果需要更多信息,请告诉我。

最佳答案

我个人认为这不是一个好主意。要登录某人,您必须指定用户是谁。稍后当您的应用程序变得更加复杂时,您可能会在不同用户之间进行交互。从场景中隐藏任何这些都不好。

您可以做的是在单个步骤中结合用户规范和登录,例如

Given I am logged in as an admin
Given Fred is logged in as a sales executive

等等

如果您对如何实现这些步骤很聪明,您可以通过从步骤定义中提取辅助方法并使用全局变量来存储人员来让事情变得相当枯燥,例如

Given 'I am logged in as an admin' do
  @i = create_user role: admin
  login as: admin, user: @i

并在其他登录步骤中重用这些方法。

如果你很好地组织你的功能,你可以为很多这些调用提供背景,例如

Feature: Basic admin ops
  Background: 
    Given I am logged in as an admin

  Scenario: I can foo
    When I foo

  Scenario: I can bar
    When I bar

一些最后的想法......

每个场景都可以插入特定的开发。与编写“Given I am logged in”的开发工作相比是微不足道的。

当出现问题时,知道您应该登录是一条重要信息。

关于testing - Cucumber - Javascript 在其他步骤定义之前调用登录步骤定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35149053/

相关文章:

angular - 使用标签在 Protractor 中只执行一个特征文件

cucumberjs - 有没有办法在上一个场景中的步骤失败后继续执行测试场景?

testing - Spring Boot 中所有测试的测试配置文件?

javascript - 等待 javascript 事件 WebDriver

c# - 如何在 SpecFlow 中的同一解决方案中跨项目共享相同的步骤定义

c# - TDD 中的命名测试与单元测试命名

testing - 如何使用 Robot Framework 上传多个文件

Python tox 和 py.test : how to run just a single test rather than the whole test suite

php - 测试网站的负载、压力、可扩展性