【问题标题】:Continue after failed test with codeceptjs使用 codeceptjs 测试失败后继续
【发布时间】:2019-01-15 04:15:50
【问题描述】:

我正在使用带有 puppeteer 的 codeceptjs 来测试单页应用程序的端点是否已启动并且是否有正确的内容。我需要使用带有 puppeteer 的 codeceptjs 之类的东西,因为每个端点都必须呈现,因为页面上的大部分内容都是由 AJAX 请求检索的,如果使用常规 PHP 版本的 codeception,这些请求不会被触发。

我首先通过 GET 请求检索将要测试的端点列表。然后我遍历它们并运行一些断言来检查是否存在各种元素。我面临的问题是,如果某个端点的某些内容丢失,则测试失败并立即退出,因此不会检查剩余的端点。我需要一种能够继续检查剩余端点的方法。

Scenario('Test Endpoints From Sitemap', async (I) => {

    // get the sitemap
    var sitemap = await I.sendGetRequest("url/to/sitemap");
    sitemap = JSON.parse(sitemap.raw_body);

    for(i = 0; i < sitemap.length; i++){
        await I.amOnPage(sitemap[i].url); // load the endpoint
        I.seeElement(sitemap[i].element) // check for an element
    }

});

如果达到失败的断言,是否可以不立即使用 codeceptjs 退出测试用例?如果没有,有人可以建议另一种方法来完成我正在尝试做的事情吗?谢谢

【问题讨论】:

    标签: javascript node.js puppeteer codeceptjs


    【解决方案1】:

    代替I.seeElement(),使用:

    if (I.grabNumberOfVisibleElements(sitemap[i].element) == 0) {
      // element not found, use an action or logging
    }
    

    【讨论】:

      【解决方案2】:

      如何在 hook 之前在套件中移动站点地图检索,存储结果,然后从每个 url 启动单个场景?这样它就不会在检查所有 url 之前取消套件运行

      【讨论】:

      • 虽然这个答案提供了一些关于实现最终目标的“更好”方式的见解。它没有回答问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      相关资源
      最近更新 更多