如何在Cypress中调用其他测试套件或特定测试用例?
解决方法
第一步:重构testsuiteA,把测试逻辑抽成可调用的函数
别直接把测试写死在it块里,把每个用例的逻辑拆成独立函数,同时保留原来的套件结构,这样单独跑testsuiteA也不受影响:
// testsuiteA.js describe('This should be called in another', function() { // 把TestCase1的逻辑做成可导出的函数 export const runTestCase1 = () => { it('TestCase1', function() { // 原来的TestCase1代码直接放这 cy.visit('/pageA'); // ...其他操作 }); }; // 同理处理TestCase2 export const runTestCase2 = () => { it('TestCase2', function() { // 原来的TestCase2代码 cy.get('.submit-btn').click(); // ...其他操作 }); }; // 保留原来的执行逻辑,单独跑testsuiteA时正常运行所有用例 runTestCase1(); runTestCase2(); });
第二步:在testsuiteB里调用整个testsuiteA
如果要完整跑testsuiteA的所有用例,直接导入整个文件就行:
// testsuiteB.js import './testsuiteA'; describe('Test Suite B', function() { // 这里写testsuiteB自己的用例 it('TestCase B1', function() { cy.get('.menu').should('be.visible'); }); // 导入后,testsuiteA的所有用例会自动在这里执行 });
第三步:只调用testsuiteA里的特定用例
如果只想跑testsuiteA里的某一个用例,导入对应的函数单独调用:
// testsuiteB.js import { runTestCase1 } from './testsuiteA'; describe('Test Suite B', function() { it('TestCase B1', function() { // ...自己的测试代码 }); // 只运行testsuiteA的TestCase1 runTestCase1(); });
额外提醒
- 如果你的Cypress不支持ES模块的
import,就换成require语法:const { runTestCase1 } = require('./testsuiteA') - 如果testsuiteA里有
before/beforeEach这类钩子,导入后这些钩子会自动生效;要是想单独控制钩子,也可以把钩子逻辑也抽成函数按需调用
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

