在所有测试之前运行

时间:2019-11-08 03:42:37

标签: cypress

我正在尝试使用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”运行的任何测试之前,在执行钩子运行之前这不是应该的吗?

1 个答案:

答案 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次。