如何在测试期间更改下载目录 运行

How to change download directory during test run

我有一些测试可以下载文件并断言其中的数据。我面临的问题是并行测试 运行 所以我不能在每次测试后删除下载目录,否则它们会删除彼此的文件。然而,不这样做的问题是文件名包含测试未知的时间戳(唯一标识符),因此无法知道要打开哪个文件。有没有办法在测试 运行 中为给定测试更改 default_directory?这个想法是为了能够告诉水豚,对于某些测试,暂时将下载路径覆盖为另一条路径?我想如果可能的话,这里也可能存在交叉布线,因为其他测试仍然可以 运行ning 期望设置原始路径?

或者,对于处理此问题有什么建议吗?

我的水豚配置如下所示

  options = Selenium::WebDriver::Chrome::Options.new
  preferences = {
      prompt_for_download: false,
      credentials_enable_service: false,
      default_directory: DownloadUtil::PATH
  }
  options.add_preference(:download, preferences)
  options.add_argument('--disable-infobars')
  options.add_argument('--headless')
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end

大多数多进程并行测试设置为您提供了一个环境变量,您可以使用它来配置每个测试运行器实例之间需要不同的东西(数据库名称、端口等)。在 parallel_rspec 的情况下,即 TEST_ENV_NUMBER。使用它,您可以在每个测试运行器中配置 selenium/chrome 实例以使用不同的下载目录 - 类似于

preferences = {
  prompt_for_download: false,
  credentials_enable_service: false,
  default_directory: DownloadUtil::PATH + ENV['TEST_ENV_NUMBER']
}