我的项目中有一些功能文件,我只需要(@Regression)
使用终端执行功能文件中的特定黄瓜标签。我可以使用标签运行功能文件。但是test/Browser
对于每个功能文件,窗口都会关闭并打开。在这种情况下,我必须在所有功能文件中编写登录脚本以避免此问题。
期望:Test/Browser
不应该每次都关闭,并且登录应该只在脚本执行开始时发生。
有人可以帮我克服这个问题吗?
我的项目中有一些功能文件,我只需要(@Regression)
使用终端执行功能文件中的特定黄瓜标签。我可以使用标签运行功能文件。但是test/Browser
对于每个功能文件,窗口都会关闭并打开。在这种情况下,我必须在所有功能文件中编写登录脚本以避免此问题。
期望:Test/Browser
不应该每次都关闭,并且登录应该只在脚本执行开始时发生。
有人可以帮我克服这个问题吗?
解释
您必须分别为功能中的每个场景运行登录是预期的行为,因为每个测试本身应该尽可能独立。
为了不必一次又一次地为每个场景添加登录步骤,Cucumber 中有所谓的背景。背景描述了作为功能中所有场景的先决条件的步骤。
背景的行为与普通场景类似,因此例如,您可以在每个功能中创建一个背景,并带有一个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
});
关于登录的逻辑,通常适合使用赛普拉斯自定义命令(Azure AD 的登录示例)