Python - 生成Robot Framework 类

来源:互联网 发布:百合 知乎 编辑:程序博客网 时间:2024/05/29 06:34

Python - 生成Robot Framework 类
Max.Bai
2016-07-19

Python - 生成Robot Framework 类

Max.Bai

2016-07-19

最近在写一个web版的RIDE,用到了python执行robot脚本的问题,现做一个记录

直接创建TestSuit类

用python脚本生成Robot Framework 里面的TestSuite,并执行

from robot.api import TestSuitets = TestSuite('test')ts.resource.imports.library('Selenium2Library')ts.resource.imports.resource('d:/temp/flows.robot')tc = ts.tests.create('case')tc.keywords.create('Open Browser', args=[u'url=http://www.baidu.com', u'browser=gc'])tc.keywords.create('Go to', args=[u'url=http://tieba.baidu.com'])tc.keywords.create(u'\u5546\u54c1\u8be6\u60c5\u9875\u968f\u673a\u9009\u62e9\u5546\u54c1', args=[])ts.run()

文件转TestSuite

也可以从robot 文件生产TestSuite

from robot.api import TestSuiteBuildersuite = TestSuiteBuilder().build('path/to/activate_skynet.robot')

执行结果

run方法可以返回结果,也可以读取一些执行的用例,用例状态等结果

result = suite.run(critical='smoke', output='skynet.xml')assert result.return_code == 0assert result.suite.name == 'Activate Skynet'test = result.suite.tests[0]assert test.name == 'Should Activate Skynet'assert test.passed and test.criticalstats = result.suite.statisticsassert stats.critical.total == 1 and stats.critical.failed == 0

当然这样结果里面的内容还是有限的,特别是没有关键字执行的message,那么就需要导入另外一个类ExecutionResult

from robot.result import ExecutionResultresult = ExecutionResult(outputxml)for case in result.suite.tests:for kw in case.keywords:        print kw.name, kw.messages, kw.passed, kw.starttime)


生成Html Report

rom robot.api import ResultWriter# Report and xUnit files can be generated based on the result object.ResultWriter(result).write_results(report='skynet.html', log=None)# Generating log files requires processing the earlier generated output XML.ResultWriter('skynet.xml').write_results()



参考:https://robot-framework.readthedocs.io/en/3.0/autodoc/robot.running.html#examples

0 0
原创粉丝点击