代码之家  ›  专栏  ›  技术社区  ›  Devleena

在量角器中,我们能从afterall函数得到数据到afterlaunch函数吗?

  •  -1
  • Devleena  · 技术社区  · 7 年前

    我使用的是Protractor Cucumber框架(Protractor 5.2.2和Cucumber 3.2.0),我在多个浏览器中运行我的Protractor脚本作为分布式测试执行,所以每次执行完浏览器后,我都会在Afterall函数中得到一个数组,我需要在启动后得到这些数据。这样,在所有浏览器执行后,我只能从启动后发送一次这些数据。如果我试图从Afterall函数发送这些数据,那么邮件数就更多了。因此,我需要将每个Afterall函数的数据合并到启动后。我该怎么做?有人能帮我吗?提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Bharath Kumar S    7 年前

    这个对我来说很好

    const chai = require('chai');
    const chaiAsPromised = require('chai-as-promised');
    
    const page = require('../Test_pages')
    let Page = new page.Pom();
    
    const helpers = require('../helpers');
    let help = new helpers.helpers();
    
    
    
    global.before(function () {
        chai.should();
        chai.use(chaiAsPromised);
        var sf = '{}'
        this.fail = JSON.parse(sf);
        this.pass = JSON.parse(sf);
        this._pass = JSON.parse(sf);
    });
    afterEach(function () {
    
    });
    after(function () {
    
        console.log(this.fail);
        // will display all property you have added
    
    
    
        return Page.fail(this.fail);
        // call the fail method in pages file
    
    
    });
    

    在步骤定义文件中

    this.fail[`${testsuite}_${envcode}`] = [{ "pass": false, "testcode": `${testcode}`, "global": `${globalsrc}`, "env": `${envcode}`, "testsuite": `${testsuite}`, "ext3": `${type}` }];
    

    现在,您可以通过为每个测试创建一个属性来使用这个JSON对象来保持执行状态。我已经为每个执行创建了一个属性,并将testsuite和envcode名称组合在一起。

    您可以在所有挂钩函数中使用this.fail,甚至可以通过将其转换为字符串将此数据写入文件。以后你可以再看一遍。

       var jsonStr = JSON.stringify(this.fail);
        var fs = require('fs');
        fs.writeFile("test_input.json", jsonStr, function (err) {
            if (err) {
                console.log(err);
            }
        });