如何在终端中使用标签运行赛普拉斯 BDD 功能,而无需关闭每个功能的测试/浏览器

问题描述 投票:0回答:1

我的项目中有一些功能文件,我只需要使用终端从功能文件中执行特定的黄瓜标签

(@Regression)
。我可以使用标签运行功能文件。但是
test/Browser
窗口会针对每个功能文件关闭和打开。在这种情况下,我必须在所有功能文件中编写登录脚本以避免这个问题。

期望:

Test/Browser
不应每次都关闭,并且登录应仅在脚本执行开始时发生。

有人可以帮我解决这个问题吗?

automated-tests cypress
1个回答
2
投票

解释

您必须分别为功能中的每个场景运行登录是预期的行为,因为每个测试本身应该尽可能独立。

为了不必一次又一次地为每个场景添加登录步骤,Cucumber 中有所谓的 Backgrounds。背景描述了作为功能中所有场景的先决条件应用的步骤。

背景的行为与普通场景类似,因此,例如,您可以在每个功能中创建一个背景,并使用

Given
登录步骤,以便在每个场景之前自动执行。

示例

每个功能都会收到以下背景,然后在每个场景之前自动执行一次:

@SomeTag
Feature: Some Feature
    Background: User is logged in
        Given the user is logged in

    Scenario: Some first scenario
        Given ...
        When ...
        Then ...

    Scenario: Some second scenario
        Given ...
        When ...
        Then ...

步骤定义的实现与正常场景的步骤相同,并且可以在所有功能中重用:

import { defineStep, Given } from 'cypress-cucumber-preprocessor/steps';

Given('the user is logged in', () => {
  // logic for login
});

// or more generic using defineStep
defineStep('the user is logged in', () => {
  // logic for login 
});

关于登录逻辑,通常适合使用 Cypress 自定义命令Azure AD 登录示例

© www.soinside.com 2019 - 2024. All rights reserved.