【问题标题】:Where does karate.write create the file when scenario is ran in jenkins?在詹金斯中运行场景时,karate.write 在哪里创建文件?
【发布时间】:2019-07-10 09:22:31
【问题描述】:

我正在尝试在 jenkins 中运行一个在本地工作的场景,但它抱怨找不到文件。如果我使用 karate.write 函数,jenkins 默认在哪里创建文件?

尝试使用以下命令读取文件:

def chanceID = read('file:target/OpportunityID.txt')

这在本地工作,但在 jenkins 中运行时它不喜欢它并抱怨找不到文件。

// 用于执行 karate.write 的代码

  • def txtFileName = 'OpportunityID.txt'
  • def value = function writeOpportunityIDToFile(value,textFileName) { var time = java.lang.System.currentTimeMillis(); karate.write(value, textFileName); karate.log('保存的机会 id 到:', textFileName); }
  • 调用 writeOpportunityIDToFile(opportunityID,txtFileName);

在jenkins中运行时的错误信息:

“opportunityApi_scenario002_run001_IT.feature:11 - 找不到或 读取文件:file:target/OpportunityID.txt"

【问题讨论】:

    标签: jenkins karate


    【解决方案1】:

    如果不了解您的 Jenkins 环境,这很难诊断。也可能存在权限问题,因此文件创建可能会受到限制。在 0.9.4 中,我们从 karate.write() 方法返回一个 java.io.File 对象,因此您可以尝试打印它等等。

    但是请,阅读这篇文章,因为 99% 的时间 - 你不应该在空手道中写文件:https://stackoverflow.com/a/54593057/143475

    【讨论】:

    • 响应返回的Id在下一个场景中用于追加到一个url,这样记录就可以用来更新了。之后的场景使用相同的 id 访问删除记录以保持系统清洁的 url。有更好的方法吗?我以前遇到过您发布的链接,并决定 karate.write 是我在阅读后应该采取的一种方法......但是就像帖子说我没有经验(所以可能落入陷阱)并且仍然试图找出最好的做事方式。
    • @Mr-Ho 你应该永远有一个Scenario 依赖另一个,那是你的错误。链接中已经提到过,但也请阅读:github.com/intuit/karate#script-structure
    • 好的,我会重新构建我的场景,这样它们就不会依赖于其他场景
    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 2017-01-29
    • 2019-10-03
    • 2018-06-19
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    相关资源
    最近更新 更多