首页 > 解决方案 > 如何使用 popen 获得运行机器人文件的结果?

问题描述

我希望能够检索使用 popen 运行的机器人测试的结果(无论是通过还是失败)。我想使用 popen 来支持对话框和不是对话框的测试。有没有办法检索结果?我在这里使用此页面的代码(链接)。

import sys
import subprocess

my_path = sys.executable
def run_process(command):
    print("Running command: " + command)
    p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)

    while True:
        if sys.version_info >= (3, 0):
            nextline = str(p.stdout.readline(),"utf-8")
        else:
            nextline = p.stdout.readline()
        if nextline == '' and p.poll() is not None:
            break
        sys.stdout.write(nextline)
        sys.stdout.flush()

python_path = my_path + ' -m robot.run'
Location ='C:/Users/Desktop/pass_or_fail.robot'
command=python_path+' '+Location
run_process(command)
print(my_path)

标签: pythonrobotframework

解决方案


而不是popen我建议使用robot.run.run_cli(arguments=None, exit=True) Robot Framework API 函数

from robot import run_cli

# Run tests and return the return code.
rc = run_cli(['--name', 'Example', 'tests.robot'], exit=False)

这将简化执行,同时具有相同的返回码。

返回代码的返回与在命令行上运行时类似。零表示已执行测试并且没有关键测试失败,最大 250 的值表示失败的关键测试的数量,251-255 之间的值表示机器人框架用户指南中记录的其他状态。

此外,通过以编程方式执行多次运行,robot.rebot.rebot_cli(arguments=None, exit=True) API 调用可用于将所有结果合并到单个 log.html 和 report.html 文件中。

from robot import rebot_cli

rebot_cli(['--name', 'Example', '--log', 'NONE', 'o1.xml', 'o2.xml'])

推荐阅读