【问题标题】:Use Robot Framework logging file at the end of test case execution在测试用例执行结束时使用 Robot Framework 日志文件
【发布时间】:2022-01-27 21:14:05
【问题描述】:

我是一名新的 Robot Framework 用户,对它在执行测试用例结束时生成的日志文件有疑问。我想使用它创建的 html 文件并将其自动上传到正确的票证。我已经有用于上传文件的 python 代码,它可以用作关键字,但我不确定如何调用该关键字作为测试拆卸步骤,因为此时可能尚未创建日志记录。

这是否正确,如果正确:是否有另一种方法可以在执行测试用例后自动调用 python 函数上传 html 文件?

【问题讨论】:

    标签: python robotframework


    【解决方案1】:

    是的,您可以使用以下内容:

    Test Teardown    Run keyword if test Passed/Failed   Name_of_kw
    

    将此添加到 .robot 文件的设置部分。

    现在,定义 kw:(首先在您的机器人文件中导入流程库)

    Name_of_kw
    Start Process <tab>  python <tab> path_to_file.py<tab> alias=prog
    Wait for Process  prog  #wait until it gets completed
    Get Process Result prog    stdout=yes #to make sure you have uploaded it
    

    ================ 更多详细信息,请访问 -https://robotframework.org/robotframework/latest/libraries/Process.html#library-documentation-top

    【讨论】:

    • 嗨!感谢您的帮助:) 我尝试了您的解决方案,它运行正常,因为它没有给出错误消息,但不幸的是日志文件没有上传。我还看到机器人框架的日志文件是在测试通过后创建的(包括运行拆卸)。所以可能没有上传任何内容,因为执行拆卸时日志文件还不存在?
    • @安娜。您可以添加一个单独的案例,以便在套件结束时执行。
    【解决方案2】:

    我一直面临同样的问题,我有一个替代解决方案可以在相同的执行过程中获取日志文件(log.html、report.html、output.xml)并将它们上传到 FTP 服务器。

    我在 Robot Framework 的根项目文件夹中创建了一个 python 脚本:

    import subprocess
    import os.path
    import time
    
    arguments = sys.argv
    subprocess.run(arguments)
    logs = ['log.html', 'report.html', 'output.xml']
    
    while not os.path.exists(logs[0] and logs[1] and logs[2]):
      time.sleep(1)
    
    do_something()
    

    而不是运行:

    robot .\tests\...\suite
    

    运行:

    python script.py robot .\tests\...\suite
    

    这样,您将能够在测试或套件完成时使用输出文件。

    如果您使用 -d 标志 运行机器人命令以将结果保存在不同的文件夹中,请考虑使用 Robot Framework 中名为 ${OUTPUT DIR} 的自动变量来获取完整源路径并将其保存到根文件夹的txt文件中。那是因为您将能够阅读它并在您的 script.py 中找到日志。

    【讨论】:

      猜你喜欢
      • 2016-01-09
      • 2014-06-18
      • 2019-07-13
      • 2014-02-27
      • 2016-01-13
      • 1970-01-01
      • 2018-12-14
      • 2017-09-21
      • 1970-01-01
      相关资源
      最近更新 更多