Gherkin语法的@标记和Examples
Dennis Zhang
Posted on August 12, 2024
1、### @ 标记(也称为标签)用于对 Gherkin 场景(Scenario)或场景大纲(Scenario Outline)进行分类和过滤。你可以通过标签选择特定的测试场景进行运行。
用法: 标签可以放在 Feature 或 Scenario 之前,用 @ 加上标签名称表示。
通过使用标签,你可以运行特定类型的测试。例如,使用 cypress-cucumber-preprocessor 时,你可以只运行带有 @smoke 标签的测试:
命令行方式
npx cypress run --env TAGS="@smoke"
配置文件方式
e2e: {
async setupNodeEvents(on, config) {
// 加载Cucumber插件
await addCucumberPreprocessorPlugin(on, config);
// 为Cucumber Preprocessor添加Esbuild处理器
on('file:preprocessor', createEsbuildPreprocessor(config));
// 返回配置
return config;
},
// 在这里设置需要运行的标签
env: {
TAGS: '@smoke and not @ignore',
},
// 其他 Cypress 配置
specPattern: 'cypress/e2e/**/*.feature',
baseUrl: 'http://localhost:3000',
},
2、Examples 表(用于场景大纲)
一个包含 Examples 表的 Gherkin 场景大纲
@login
Feature: User login
Scenario Outline: Login with different credentials
Given the user is on the login page
When the user enters "<username>" and "<password>"
Then the user should see a "<message>"
Examples:
| username | password | message |
| validUser | validPass | Welcome back! |
| invalidUser | validPass | Invalid credentials! |
| validUser | invalidPass | Invalid credentials! |
步骤定义文件通常放在 cypress/e2e/ 目录中。你需要使用 Gherkin 步骤定义(如 Given, When, Then)来处理 Examples 表中的数据
import { Given, When, Then } from '@badeball/cypress-cucumber-preprocessor';
Given('the user is on the login page', () => {
cy.visit('/login'); // 访问登录页面
});
When('the user enters {string} and {string}', (username, password) => {
// 使用传递的数据执行操作
cy.get('input[name="username"]').type(username);
cy.get('input[name="password"]').type(password);
cy.get('button[type="submit"]').click();
});
Then('the user should see a {string}', (message) => {
// 检查页面上的消息是否与预期一致
cy.contains(message).should('be.visible');
});
💖 💪 🙅 🚩
Dennis Zhang
Posted on August 12, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.