我希望能够检索使用popen运行的机器人测试的结果(无论是通过还是失败)。我想使用popen来支持对话框和非对话框测试。有什么方法可以检索结果吗?我在这里(link).
使用此页面中的代码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)
答案 0 :(得分:0)
如果测试通过或失败,则可以将其存储为整数。例如,0表示测试通过,大于0的任何表示测试失败。这就是为什么我使用:
output = p.communicate()[0]
rc = p.returncode
import sys
import subprocess
my_path = sys.executable
def run_process(command):
global output
global rc
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()
output = p.communicate()[0]
rc = p.returncode
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)
print(rc)
答案 1 :(得分:0)
我建议使用 popen
Robot Framework API function 代替 robot.run.run_cli(arguments=None, exit=True)
。
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 Framework User Guide 中记录的其他状态。
此外,通过以编程方式执行多次运行,robot.rebot.rebot_cli(arguments=None, exit=True)
API call 可用于将所有结果合并到单个 log.html 和 report.html 文件中。
from robot import rebot_cli
rebot_cli(['--name', 'Example', '--log', 'NONE', 'o1.xml', 'o2.xml'])