我正在尝试使用cy.writeFile针对api写入我的装置文件。我需要在运行任何赛普拉斯测试之前生成这些夹具文件,因为所有测试都将使用这些夹具文件。我只需要一次运行一次,就可以运行任何测试,而不是每次测试之前。
我试图在/cypress/support/index.js文件中添加一个before函数,但是当我运行“ cypress run”时,它并没有创建夹具文件。
import './commands'
before(function() {
// runs once before all tests in the block
const apiUrl = 'http://localhost:8080/api/';
const fixturesPath = 'cypress/fixtures/';
const fixtureExtension = '.json';
let routePath = 'locations';
cy.request(`${apiUrl}${routePath}`).then((response) => {
cy.writeFile(`${fixturesPath}${path}${fixtureExtension}`, response.body);
});
});
在进行“ cypress run”运行的任何测试之前,在执行钩子运行之前这不是应该的吗?
答案 0 :(得分:0)
是的,它应该在您进行任何测试之前运行。
因为请求失败,所以未创建固定装置。例如,这是由多种原因引起的:赛普拉斯运行时api尚未准备就绪,或者需要进行身份验证...您最好再次进行检查。
我举了一个例子here。在启动cypress yarn cy:run 之前,您必须确保api服务器( yarn start:mock )和网络服务器( yarn start )准备好了。
请注意,由于it's included in every test suite, support / index.js 中的 before()函数没有运行一次,所以假设您有3个测试文件,然后执行3次。