如何使用cypress遍历请求?

时间:2020-03-02 13:01:16

标签: javascript for-loop web automated-tests cypress

  function AssertResponseCode200(request) {
    cy.wait(request).then(response => {
      expect(response.status).to.eq(200);
    });
  }

  function CheckDictionaries() {
    var requestUrls = [
      "requestUrl1",
      "requestUrl2",
      "..."
    ];

    for (let i = 0; i < requestUrls.length; i++) {
      cy.route("GET", requestUrls[i]).as(`request${i}`);
      AssertResponseCode200(`@request${i}`);
    }
  }

  it("Assert dictionaries", () => {
    cy.server();
    CheckDictionaries();
});

enter image description here

CypressError: Timed out retrying: cy.wait() timed out waiting 5000ms for the 1st request to the route: 'request1'. No request ever occurred.

我想循环浏览请求,并检查一切正常,并且响应代码为200。但是我被卡住了,因为唯一别名的URL是数组中的第一个URL,但是我需要{ {1}}数组的别名为requestUrls。我的代码有什么问题,还是赛普拉斯的路由无法用于for循环?

1 个答案:

答案 0 :(得分:1)

我认为您遇到的问题是,因为您每次仅等待一个请求完成,但是请求以随机顺序异步完成,因此有时您可能在等待已经完成的请求。

cy.wait()也接受别名数组,因此您可以先收集所有别名,然后用一个cy.wait()等待所有别名。

const aliases = [];
for (let i = 0; i < requestUrls.length; i++) {
  aliases.push(`@request${i}`);
  ...
}

cy.wait(aliases);
相关问题