【问题标题】:how to create multiple it statements with in one For loop protractor如何在一个 For 循环量角器中创建多个 it 语句
【发布时间】:2018-03-28 09:42:10
【问题描述】:

我在一个描述 {} 中有多个 it 语句。在一个 it 语句中,我正在从 excel 中读取数据并执行 for 循环以针对工作表中的用户数量执行测试脚本。我需要创建页面模型,因此每个页面都在考虑创建一个 it 语句。我们怎么能这样做。这是我的实际脚本

var login = require('./login');
var utility = require('./utility');
var exRead = require('./readExcel');

describe('MSIX Smoke', function () {
  var userList = [];

  beforeAll(function(done) {

    browser.get('https://url');  //Dev url
    expect(browser.getTitle()).toEqual('test');
    exRead().then(function(excelData) {
      userList = prepData(excelData);
      done();
    });

  });

  it('should login users', function() {
    var loopCount = userList.length
    loopCount=1;
    for (var i = 0; i<loopCount; i++) {
      var data = userList[i];
      loginScript(data[0], data[1], data[2]);
      login.clickSignOut();
     }
  })

   it('search for a student', function () {
     console.log(data[3]);
   });
it ('click on my account', function () {
//some code
})
});

function prepData(data) {
  var formattedData = [];
  var counter = data.length / 5;
  for (var i = 0; i < counter; i++) {
    formattedData.push(data.splice(0,5))
  }
  return formattedData;
}  

function loginScript(username, password, userType) {
  var loginName = element(by.css('.nameP'));
  console.log(username, password);
  login.fillUsername(username);
  login.fillPassword(password);
  login.clickSignup();
  login.clickPrivacy();
  console.log("User " + username + " with user type "+userType+" logged in successfully");
  loginName.isPresent;
  utility.getStringText("Logged in user name is: ", loginName);
  return loginName;
};

【问题讨论】:

  • 嘿@SumedhaGamage,感谢您的回复。我已经检查过了,但这不是我要找的东西。我的数据将从 excel 表中读取,需要将数据解析为多个 it 语句,并根据我的数据表中的行数迭代这些 it 语句
  • 嗨@SumedhaGamage,感谢您的参考。我最终在该参考文献中使用了相同的代码,并且能够使用多个 it 语句

标签: node.js for-loop jasmine protractor


【解决方案1】:

给出两种方法的代码示例:

describe('xxx', function() {

    browser.get('https://www.npmjs.com');

    var datas = [1, 2, 3];

    // Option 1, use for loop and javascript closure
    for (var i = 0, len = datas.length; i < len; i++) {

        (function(i) {
            return it('yyy ' + i, function() {
                console.log('data[' + i + '] = ' + datas[i]);
                browser.getTitle().then(function(title) {
                    console.log('title[' + i + '] = ' + title);
                });
            });
        })(i);
    }

    // option 2, use Array.forEach()
    datas.forEach(function(data, i) {
        it('yyy ' + i, function() {
            console.log('data[' + i + '] = ' + data);

            browser.getTitle().then(function(title) {
                console.log('title[' + i + '] = ' + title);
            });
        });
    })
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2017-11-22
    相关资源
    最近更新 更多