Automated tests Cypress-如何按顺序运行测试文件
当我按下“runallspecs”或使用run命令运行Cypress中的所有文件时,它会按字母顺序运行所有测试文件,所以我不希望这样 我想用我自己的规则对它们进行分类Automated tests Cypress-如何按顺序运行测试文件,automated-tests,cypress,Automated Tests,Cypress,当我按下“runallspecs”或使用run命令运行Cypress中的所有文件时,它会按字母顺序运行所有测试文件,所以我不希望这样 我想用我自己的规则对它们进行分类 假设我在聊天应用程序测试中有3个步骤 可以连接聊天应用程序 可以连接聊天室 用户可以发送消息吗 我想测试每一步,而不是互相束缚。 我的意思是,测试他们自己的一个功能。 我所做的如下 chat\u app\u connect.spec.js description('服务器连接测试',()=>{ 它('访问服务器页面',()=>{
假设我在聊天应用程序测试中有3个步骤
description('服务器连接测试',()=>{
它('访问服务器页面',()=>{
参观https://chat.page..');
});
它('检查欢迎信息',()=>{
cy.contains(“现场支持”);
cy.contains(“你好,陌生人”);
});
它('检查圈的URL和状态',()=>{
//网址
cy.url()
.should('include','hello');
//地位圈
cy.get(‘圆’)
.should('have.class','positive');
});
});
聊天室连接规范js
import./chat\u app\u connect.spec.js';
描述('聊天连接测试',()=>{
它('键入客户名称',()=>{
cy.get('input')
.clear()
.类型(“E2E试验”);
});
它('点击提交按钮',()=>{
cy.get('.submit按钮')
。单击();
});
它('检查圈的URL和状态',()=>{
//网址
cy.url()
.应该('相等','https://client.dev.octopus.chat/');
//地位圈
cy.get('circle',{timeout:5000})
.should('have.class','positive');
});
});
chating.spec.js
import./chat_connect.spec.js';
描述('聊天测试',()=>{
它('键入一条测试消息,然后按Enter键并检查消息是否已发送',()=>{
//类型
cy.get(“#聊天信息”)
.clear()
.type('嘿,我是一条测试消息{enter}');
//检查消息
cy.get(“.message list”)
.should('contain','Hey I'm a test message');
});
});
正如您所看到的,每个测试都是相互关联的,这意味着当我尝试测试功能时,它的调用每个测试和整个测试都将被测试
我不知道这是不是正确的方法
在这种情况下,我应该怎么做,或者这是一种可以接受的方式Cypress不会故意让您这么做,并且有充分的理由:
01-some-spec.js
02-alphabetically-first-spec.js
03-some-other-spec.js
我有一个特殊的例子,我启动一个应用程序的多个实例,而不是使用装置或测试数据,我只是将用户反馈集成为从登录到转发的Cypress测试 在任何情况下,我都使用
cypress.json
中的testFiles
配置来设置规范文件的运行顺序:
{
“baseUrl”:http://localhost:5000",
“测试文件”:[
“login/*.js”,
“lead/new lead.spec.js”,
“leads/leads list.spec.js”,
“lead/lead detail.spec.js”,
“lead/lead modify.spec.js”,
//...
]
}
不需要文件编号:D最简单的解决方案是为所有测试文件添加前缀,例如:
01-chat\u app\u connect.spec.js
02-chat\u connect.spec.js
Cypress将按字母顺序接收这些文件,你可以通过使用数字作为前缀来“欺骗”你想要的行为。Jean Lescure的答案是救命恩人。我们需要基于优先级运行测试,而不需要一堆重复的测试或符号链接。在我们的默认cypress配置文件中,以下内容适用于我们:
"integrationFolder":"cypress/integration",
"testFiles": [
"high_priority_specs/**/*.js",
"medium_priority_specs/**/*.js",
"low_priority_specs/**/*.js"
]
为了更改优先级级别,我们使用了3个使用cypress--configFile参数加载的配置文件。为了运行更高优先级的测试(仅限烟雾测试),我们使用了以下方法:
"integrationFolder":"cypress/integration",
"testFiles": [
"high_priority_specs/**/*.js"
]
我正在为一个聊天应用程序编写测试,所以像“先登录然后开始聊天”这样的案例有点挑战性。我不想要大代码块,我想要小文件中的小代码块。我在导入中发现了这一点,但这似乎不正确。我在测试中所做的是编写一个自定义命令,使用
cy.request()
登录,然后在before()
块中,调用我的cy.login()
命令。这就是您应该如何设置状态以避免依赖于特定的测试执行顺序。这将非常有用。我可以去掉这些数字。请注意:这(任何测试排序方法)是功能工作方式的副产品。testFiles
的目的是仅包括某些规格,而不是用于订购。这恰好是它内部的工作方式,可能会也可能不会永远工作下去,因为Cypress并不声称它是这样工作的。这样做的一个缺点是,每个新的测试文件都必须手动添加到Cypress.json
中。如果使用*
模式,并以这种方式存储您的测试,所有那些不显式的测试最终都会执行