如何在mocha中描述块之外定义一个全局变量?

时间:2018-02-28 17:21:12

标签: javascript mocha webdriver-io chimp.js

您好我正在尝试使用mocha chimp和webdriverio编写前端测试。因为我必须在字体结尾处理不同的id,所以在每个块中我必须为各种目的定义它们。我试图在describe块之外定义ID然后它显示浏览器没有定义。这是示例代码。

describe('password validation', function () {
    it('password should be empty @watch ', function () {
        const passwordInput = browser.element('#passwordInput');
        assert.equal(passwordInput.getValue(),"");

    });

    it("should identify weak password @watch",function () {
        const passwordInput = browser.element('#passwordInput');
        passwordInput.setValue("helloWordl");
        browser.waitForVisible(".has-warning",500);
        passwordInput.setValue("helloWordl@3");
    })

    it("should identify miss matched and matched password @watch",function () {
        const confirmpasswordInput = browser.element('#confirmpasswordInput');
        confirmpasswordInput.setValue("adofidlf"); //miss matched password given
        browser.waitForVisible(".has-error",50); //it should shows the error for worng password
        confirmpasswordInput.setValue("helloWordl@3");
        browser.waitForVisible(".has-success",50);

    })

} )

任何人都可以告诉我如何在描述块之外定义变量,包括浏览器表示法,这样我就不需要每次在不同的描述块中定义它们。

2 个答案:

答案 0 :(得分:0)

您可以在describe块中定义变量并使用beforeEach进行初始化(来自mocha文档(https://mochajs.org/)):

    describe('Connection', function() {
      var db = new Connection,
      tobi = new User('tobi'),
      loki = new User('loki'),
      jane = new User('jane');

      beforeEach(function(done) {
        db.clear(function(err) {
          if (err) return done(err);
          db.save([tobi, loki, jane], done);
        });
      });

      describe('#find()', function() {
        it('respond with matching records', function(done) {
          db.find({type: 'User'}, function(err, res) {
            if (err) return done(err);
            res.should.have.length(3);
            done();
          });
        });
      });
    });

答案 1 :(得分:0)

您可以在对象外部描述中将id选择器定义为字符串。 根据你的情况,它将是

const target = {
 input:{
  password:'#passwordInput',
  confirmPassword:'#confirmpasswordInput'
 }
}
describe('something',()=>{console.log(target.input.password)})

!!! “浏览器”。命令无法在describe()之外运行,您需要为它描述当前文件测试用例名称并使用before()或beforeEach()来使用它。 describe()可以包含其他nest describe()

    describe('Test A',()=>{
         var element = {}
         before(()=>{
          browser.url('...')
          element['input']['password'] = browser.element('passwordInput')
         })
         describe('case A',()=>{
          it('should empty',()=>{
           assert.equal(element.input.password.getValue(),'')
          })
         })
        })