matmanjs / matman

Web 端对端测试(E2E,End-to-End Testing)解决方案
https://matmanjs.github.io/matman
MIT License
46 stars 10 forks source link

多行为测试时,支持指定key值,以便更好的写用例 #150

Closed helinjiang closed 5 years ago

helinjiang commented 5 years ago

使用 caseParser.handleOperate() 方式来定制测试过程时,产生的数据存在于一个列表中。如果测试步骤较多,且后续删除一两个步骤,则列表的索引则发生了变化,此时测试用例需要重新核对索引才能够正常通过。

因此,如果在定义 addAction() 时,传入指定的 key 值,则使用 map 表来获得对应的数据,次方式会更加灵活

helinjiang commented 5 years ago

addAction(actionName, actionCall) 增加一个参数,指定自定义名字。例如下面的例子中指定了名字为 selectQuota ,则可以多一种方式来获取结果数据

caseParser.handleOperate(pageUrl, crawlerScriptPath, reqOpts, (testAction) => {
        // 第一步:开始操作之前
        testAction.addAction('init', function (nightmareRun) {
            return nightmareRun.wait(500);
        });

        // 第二步:选中【5元】
        testAction.addAction('selectQuota', function (nightmareRun) {
            return nightmareRun.click('#root .display-withdraw .display-withdraw-quotas .selection .i0');
        });

        // 第三步:一秒后再次获取页面状态
        testAction.addAction(function (nightmareRun) {
            return nightmareRun.wait(1000);
        });
    }).then(function (result) {
        // 方式一: 通过自定义名字获取
        console.log(result.get('selectQuota'));

        // 方式二: 通过数组队列序号来获取,等效于方式三
        console.log(result.get(1));

        // 方式三: 通过数组队列序号来获取,等效于方式二
        console.log(result.data[1]);
    });

注意,自定义名字 actionName 并非必选,如果不定义,则依然可以按照后面两种方式获得。

强烈建议自定义名字!

helinjiang commented 5 years ago

image