量角器中是否有dataprovider概念?

时间:2014-09-26 09:12:46

标签: mocha protractor

我想在基于Protractor的测试中使用数据提供程序来为多组数据运行相同的测试。我希望它与testng数据提供程序非常相似。

1 个答案:

答案 0 :(得分:2)

我认为这是您使用Protractor的特定测试框架的责任(例如Jasmine,Mocha,...)。

AFAIK这些框架没有参数化测试支持。但是在我们的测试中,我们这样做了,它对我们非常有用:

    var testCases = [
        { param1: 'testcase1Param1', param2: 'testCase1Param2'  },
        { param1: 'testcase2Param1', param2: 'testCase2Param2'  },
    ];

    /*jshint -W083 */ //Disable warning for function created inside loop
    //this is parametrized test and it's better readable this way.
    testCases.forEach(function (testCase){
        describe('for test case: param1" ' + testCase.param1 +
                ' and param2: "' + testCase.param2 + '"', function(){
           //do your testing
        }
    }

修改

评论中存在如何将参数保存在单独文件中的问题。这可以归结为测试套件配置以及它如何处理模块化。到目前为止,我看到了这些方法:

  • 基于一个主要HTML文件的Jasmine套件。在这种情况下,您可以通过<script> HTML标记在测试类之前包含测试用例文件。看看这里:http://jasmine.github.io/2.0/introduction.html#section-Standalone_Distribution
  • 基于Karma的测试套件,带有RequireJs,用于处理依赖关系。使用此配置,您可以通过标准RequireJs机制导入文件。这将涉及围绕KarmaRequireJs的一些研究。顺便说一句,当您使用Protractor时,您正在测试Angular团队制作的AngularJs应用程序和Karma ist测试工具。

Karma可以与各种测试框架和模块系统集成。因此,如果你想要一些其他风格的处理模块(例如CommonJs),你可以使用Karma轻松完成。