【发布时间】:2019-10-04 17:15:51
【问题描述】:
我正在尝试使用 selenium-grid、docker 容器、jenkins 和 aws-ecs 设置自动化测试套件。
selenium-grid 将使用 aws-ecs 设置。自动化测试将作为 jenkins 管道的一部分执行。
问题在于测试套件包含文件下载测试。我不能使用卷,因为容器将在与 jenkins 工作区不同的机器上运行。
有什么方法可以断言文件已下载?容器中运行的浏览器实例能否提供文件下载已开始的任何确认信息?
请在下面找到我用于在 本地 设置上验证文件下载的 stepdef。
@And("a file called (.*) should be downloaded to my downloads directory")
public void verifyFileDownload(String filename) throws InterruptedException {
Thread.sleep(1000);
List<String> results = new ArrayList<String>();
File[] files = new File(DOWNLOAD_DIRECTORY).listFiles();
for (File file : files) {
if (file.isFile()) {
results.add(file.getName());
}
}
assertThat(results.contains(filename), is(true));
}
【问题讨论】:
-
您能否将下载设为单独的步骤?那么你就不需要做测试了,因为当步骤完成后下载就完成了,否则如果有问题,步骤就会失败。
-
这正是预期的结果。但是如何检查文件是否已下载到 docker 容器中?
-
如果您手动进行下载 (
docker exec mycontainer wget ...),那么它将阻塞直到完成或失败,并且应用通常的 unix 返回码 - 零表示成功,非零表示失败。我假设如果 step 命令失败(这是可取的),你的整个 Jenkins 构建将失败。
标签: file docker jenkins selenium-grid amazon-ecs