【问题标题】:How can I create conditional test cases using Protractor?如何使用 Protractor 创建条件测试用例?
【发布时间】:2021-02-08 18:07:33
【问题描述】:

目前,我有一些测试用例,我只想在某些条件下执行。

it ('user is able to log in', function() {
   if(siteAllowsLogin) {
       .....
   }

使用上面的语法会导致 sitesNotAllowingLogin 通过这个测试。我知道有一个解决方案可以将测试标记为 PENDING,但我宁愿测试不显示,如果它不适用。

如果可能的话,我还想将逻辑保留在测试用例中。因此,将 if 块保留在测试用例中。

关于如果条件不满足如何跳过此测试的任何建议,以便它不会在结果中显示为 PENDING 或 PASSED。

我们将不胜感激。

【问题讨论】:

  • 据我所知,没有。就像你说的 - 你可以让它失败/挂起/通过。但是您必须将 if (condition) 语句移到 it 块之外,我知道这正是您所说的不想做的事情。
  • 感谢您的评论 - 这似乎是最好的解决方案。不过,在推动这个解决方案之前,我想看看是否还有其他想法。

标签: javascript selenium typescript automated-tests protractor


【解决方案1】:

如果提供的谓词/状态为真,您可以在前面使用ignore 函数来抑制测试:

var ignore = function(exp){return{it:((typeof exp==='function')?exp():exp)?function(){}:it}};

describe('Suite 1', function() {

    it("test a", function() {
        expect(1).toEqual(1);
    });

    ignore(true).it("test b", function() {
        expect(1).toEqual(1);
    });

    ignore(skip).it("test c", function() {
        expect(1).toEqual(1);
    });

    function skip(){
      return true;
    }
});

【讨论】:

  • 谢谢,我认为这将是一个很好的解决方案。我试图实现它,但我得到一个'ReferenceError:忽略未定义'。我正在使用 TypeScript 编写测试 - 它可以在 TypeScript 中使用吗?
  • 我也很好奇ignore 的来源。我得到了与@fuzzii 相同的错误。
  • @fuzzii @Gunderson,ignore 来自 'selenium-webdriver/testing' 扩展。不幸的是,它只适用于量角器/摩卡。我添加了声明,以便它可以与 Protractor/Jasmine 一起使用。
猜你喜欢
  • 2016-10-11
  • 2017-01-10
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
相关资源
最近更新 更多