我有一个脚本,每次执行时都会创建新的referenceId。我用了
.check(regex("orders.(.*?)\"").saveAs("referenceId")))
提取referenceId。现在,即使我将其作为负载测试运行,如何在不影响脚本的情况下将其写入/附加到文件中?
答案 0 :(得分:1)
我在.exec中使用会话将我的值写入文件。这是:
.exec( session => {
scala.tools.nsc.io.File("../user-files/data/refenceId.csv").appendAll(session("refenceId").as[String]+"\n")
session}
)
答案 1 :(得分:0)
您的解决方案有效,但......
首先,请勿使用scala.tools.nsc.io
包中的任何内容(如果您不需要)。它只是Scala编译器的内部包。它不是Scala运行时库(官方Scaladoc)中包含的公共API。有关该主题here的更多信息。 Scala没有任何自己的抽象来写入文件,因此需要使用普通的java.io.File
&共
其次,在每次执行中打开文件可能(可能不会)减慢负载测试速度。这在很大程度上取决于您提出请求的速率。在更高的速率下,当更多并发执行尝试写入同一文件时,您可能会遇到争用。最简单的解决方案是写入不同的文件,但仍然可以用尽尽可能多的已打开文件。另一种解决方案是使用共享java.io.FileOutputStream
resp。 java.io.FileWriter
通过适当的同步(将从各种线程访问)到期望的目标文件,这仍然阻止IO。另一个解决方案是使用Java NIO API通过Channel
(非阻塞)或OutputStream
写入共享文件(不确定是否为非阻塞)。
当然,解决方案的实施难度不同。