persist_globals在NightwatchJS中不起作用

时间:2018-11-29 21:20:33

标签: javascript selenium automated-tests nightwatch.js

预先感谢您的帮助。

我是js新手开发人员,试图将我们的nightwatchjs框架连接到testrails api上,以正确记录我们的结果。

作为测试运行的一部分,我从globals.js文件的before函数中的testrails中检索了一个runId(我确认这是可行的)

我的目标是将其作为全局变量存储在globals.js文件中,以便每个测试都可以访问它,并将其测试结果通过after_each方法传递给TR。

为此,我遵循了守夜人文档,并在nightwatch.js文件夹中添加了“ persist_globals” = true。

"test_settings" : {
    "default" : {
      "persist_globals": true,
      "desiredCapabilities": {
        "test_card" : "4111111111111111"
      },
      "launch_url" : "REDACTED",
      "selenium_port"  : 4444,
      "selenium_host"  : "localhost",
      "silent": true,
      "medium_Time_Out": 6000,
      "screenshots" : {
        "enabled" : false,
        "path" : ""
      }
    },

然后,在我的before函数中,我检索并保存变量:

runId: undefined,

  before: function(done) { //Asynchronous before calls take browser, then done function
    var request = require('request');
    console.log("setting up test run");
    // here we need to create a new test run
    var options = {
      url: self.urlRoot + "add_run/6",
      headers: {
        "Content-Type": "application/json",
      },
      auth: {
        'user':self.username,
        'password':self.apiKey
      },
      body: {
        'description':'this is a sample test run for debugging purposes',
        'include_all':true,
        // this is an array of all cases to be included in the test run
        'cases':[]
      },
      json:true
    }

    // function to output results
    function callback (error, response, body) {
      if(error != null) {
        console.log(error);
      } else {
        console.log(response.statusCode);
        console.log("run id created " + body.id)
        self.runId = body.id;
        done();
      }
    }
    request.post(options, callback);

  },

完成此操作后,如果我运行单个套件(文件)或多个套件(文件),则会得到不同的结果。如果我运行一个套件,可以按预期工作,则该变量将被保存,并由我的afterEach函数正确选择。

但是,如果运行中有多个测试文件,则所有这些文件(即使是第一个)都会以未定义的形式通过。在以下代码段中的afterEach中读取变量

afterEach: function(browser, done) {
    var request = require('request');
    var name = browser.currentTest.module;
    console.log(name);
    console.log("run Id is " + self.runId)

看来,无论是否存在persist_globals参数,都会为每个测试文件重建globals.js对象。我正在使用0.9.16版的守夜人

0 个答案:

没有答案