繁体   English   中英

Protractor - 在规范 2 中读取在规范 1 中填充的 CSV 文件

[英]Protractor - read in spec 2 a CSV file populated in spec 1

我正在使用 Protractor 来自动化一些测试。

在规范 1 中,我做了一些操作并在 CSV 文件中收集了一些信息:

describe("Spec 1", function () {

  for (let i of some_useful_array) {
    it("does some business", async function () {
      saveData(someData)
    })
  }

  function saveData(someData) {
    fs.appendFile("./file.csv", "\n" + someData, (err) => {
      if (err) {
        console.log(err);
      }
    })
  }

})

在规范 2 中,我想使用以下信息:

var myFile= fs.readFileSync('./file.csv');

const data = parse(myFile, {
  columns: true,
  skip_empty_lines: true
})

describe("Spec 2", function () {

  for (let i of some_other_useful_array) {
    it("does some other business", function () {
      console.log(data) // logs an empty array ([]) when run in the same execution than spec 1
    })
  }
})

当我分别运行规范 1 和规范 2 时,它就像一个魅力,但当我在同一执行中运行它们时它不起作用。 我想我需要关闭一些东西,我已经尝试了一些东西(例如fs.close() )但这些都不起作用。

任何想法?

编辑:我尝试了一些东西:在规范 1 中将 file.csv 复制到 file2.csv,并在规范 2 中使用 file2.csv。它似乎工作得更好一点。 虽然是讨厌的解决方法,但在我遇到更好的解决方案之前已经足够好了。

fs.appendFile是异步的,这意味着 javascript 不会等到它完成它的任务。 基本上规范 2 在 csv 完全创建之前运行。 当您运行至少需要几秒钟的真实规范时,这可能不会成为问题。 但为了安全起见,你最好 go 和fs.appendFileSync做同样的事情,但在这个任务完成之前不会安排另一个任务

此处描述的解决此行为的另一种方法https://stackoverflow.com/a/45463672/9150146

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM