Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 摩卡动态测试生成与动态数据生成_Javascript_Mocha.js_Integration Testing_Chai_Supertest - Fatal编程技术网

Javascript 摩卡动态测试生成与动态数据生成

Javascript 摩卡动态测试生成与动态数据生成,javascript,mocha.js,integration-testing,chai,supertest,Javascript,Mocha.js,Integration Testing,Chai,Supertest,我创建了一个名为testLoginFailed 让testloginFailed=(应用程序、标题、数据)=>{ it(标题、功能(完成){ 请求(应用程序) .post(apidemps.auth.login) .发送(数据) 。然后((响应)=>{ 响应状态码应等于(401); response.body.error.name.should.equal('error'); response.body.error.message.should.equal('login failed'); re

我创建了一个名为
testLoginFailed

让testloginFailed=(应用程序、标题、数据)=>{
it(标题、功能(完成){
请求(应用程序)
.post(apidemps.auth.login)
.发送(数据)
。然后((响应)=>{
响应状态码应等于(401);
response.body.error.name.should.equal('error');
response.body.error.message.should.equal('login failed');
response.body.error.code.should.equal('LOGIN_FAILED');
完成();
})
.catch((错误)=>{
完成(错误);
});
});
};
这是我的描述块

describe('login negative Tests', () => {
before(function () {
    let loginFailedTests = [
        {
            title: 'it should fail user login using mobile because of incorrect mobile',
            data: {
                username: '1223334444',
                password: options.user.password
            }
        }, {
            title: 'it should fail user login using mobile because of incorrect password',
            data: {
                username: options.user.mobileNumber,
                password: options.user.password + '123'
            }
        }
    ];
});

loginFailedTests.forEach((test) => {
    testloginFailed(app, test.title, test.data);
});

});
问题陈述:

  • 我想使用上面描述的函数“testloginFailed”生成动态测试用例
  • 因此,我使用不同的测试数据集testloginFailed在循环中调用该方法
  • 数组testloginFailed正在before块中初始化,因为它需要一些使用选项的glocal范围内的数据
  • 问题:当我在上面的步骤2中尝试使用这个数组时,它说

    ReferenceError:未定义loginFailedTests

    从医生那里

  • 加载测试文件时,Mocha执行其所有套件,并在其中查找(但不执行)任何挂钩和测试
  • 任何“所有之前”的钩子(对于根套件,这只发生一次;请参阅根钩子插件)
  • 我们知道
    descripe()
    及其回调将在
    before
    挂钩之前执行。执行顺序是
    descripe()
    =>
    before()
    =>
    it()

    因此,您应该将测试数据的初始化过程放在
    descripe()
    块中

    例如

    const{expect}=require('chai');
    const options={user:{password:'123',mobileNumber:'321'};
    常量app={};
    让testloginFailed=(应用程序、标题、数据)=>{
    it(标题、功能(){
    期望(1+1).to.be.eql(2);
    });
    };
    描述('登录负面测试',()=>{
    让loginFailedTests=[
    {
    标题:“由于手机不正确,用户使用手机登录失败”,
    数据:{
    用户名:“1223334444”,
    密码:options.user.password,
    },
    },
    {
    标题:“由于密码不正确,用户使用手机登录失败”,
    数据:{
    用户名:options.user.mobileNumber,
    密码:options.user.password+'123',
    },
    },
    ];
    登录失败测试forEach((测试)=>{
    testloginFailed(应用程序、test.title、test.data);
    });
    });
    
    测试结果:

      login negative Tests
        ✓ it should fail user login using mobile because of incorrect mobile
        ✓ it should fail user login using mobile because of incorrect password
    
    
      2 passing (5ms)
    

    尝试在before块外部创建变量,并在before块内部设置它的值。@pulkitsinghal不起作用,因为在before块外部声明loginFailedTests会给循环提供一个空数组,因此不会生成测试
      login negative Tests
        ✓ it should fail user login using mobile because of incorrect mobile
        ✓ it should fail user login using mobile because of incorrect password
    
    
      2 passing (5ms)