robot framework api 显示keyword日志信息

1. 如何在python中使用robot api执行测试用例

文档中提供了一个简单的例子, demo如下:

# 官网: https://robot-framework.readthedocs.io/en/latest/autodoc/robot.running.html
# 默认会在当前目录生成三个文件: output, log和report
from robot.api import TestSuite
from robot.api import ResultWriter

suite = TestSuite('Activate Skynet')
suite.resource.imports.library('OperatingSystem')
test = suite.tests.create('Should Activate Skynet', tags=['smoke'])
test.keywords.create('Set Environment Variable', args=[
                     'SKYNET', 'activated'], type='setup')
test.keywords.create('Environment Variable Should Be Set', args=['SKYNET'])
result = suite.run(critical='smoke', output='skynet.xml')


# Report and xUnit files can be generated based on the result object.
ResultWriter(result).write_results(report='skynet.html', log='skynet-log.html')

1.1 demo的问题

运行后使用浏览器打开log文件, 日志中少了keyword信息(如左图, 没有setup和KEYWORD), 那如何才能达到右图的效果呢?image

1.2 如何解决

  • 使用allure_robotframework, 参考文章
  • 使用RobotSettings

2. 使用RobotSettings解决robot api 结果不显示keyword信息问题

  • import RobotSettings: from robot.conf import RobotSettings
  • 使用默认配置: settings = RobotSettings()
  • suite.run()中增加settings参数: result = suite.run(settings, critical=‘smoke’, output=‘skynet.xml’)
  • ResultWriter中使用settings的默认参数: ResultWriter(settings.output if settings.log else result).write_results(report=settings.report, log=settings.log)

完整代码如下:

# 官网: https://robot-framework.readthedocs.io/en/latest/autodoc/robot.running.html
# 默认会在当前目录生成三个文件: output, log和report
from robot.api import TestSuite
from robot.api import ResultWriter
from robot.conf import RobotSettings
suite = TestSuite('Activate Skynet')
suite.resource.imports.library('OperatingSystem')
test = suite.tests.create('Should Activate Skynet', tags=['smoke'])
test.keywords.create('Set Environment Variable', args=[
                     'SKYNET', 'activated'], type='setup')
test.keywords.create('Environment Variable Should Be Set', args=['SKYNET'])
settings = RobotSettings()
result = suite.run(settings, critical='smoke', output='skynet.xml')


# Report and xUnit files can be generated based on the result object.
# ResultWriter(result).write_results(report='skynet.html', log='skynet-log.html')
ResultWriter(settings.output if settings.log
             else result).write_results(
    report=settings.report, log=settings.log)

2.1 Log文件显示了keyword信息, 但如何修改默认文件名呢

答案是: 配置RobotSettings的options, 将代码修改如下:

from robot.api import TestSuite
from robot.api import ResultWriter
from robot.conf import RobotSettings

suite = TestSuite('Activate Skynet')
suite.resource.imports.library('OperatingSystem')
test = suite.tests.create('Should Activate Skynet', tags=['smoke'])
test.keywords.create('Set Environment Variable', args=[
                     'SKYNET', 'activated'], type='setup')
test.keywords.create('Environment Variable Should Be Set', args=['SKYNET'])
path = "reports"
apiname = 'skynet'
options = {
    "output": "{}-output.xml".format(apiname),
    "log": "{}-log.html".format(apiname),
    "report": "{}-reporter.html".format(apiname),
    "outputdir": path,
}
settings = RobotSettings(options)
result = suite.run(settings, critical='smoke')

ResultWriter(settings.output if settings.log
             else result).write_results(
    report=settings.report, log=settings.log)

3. 回顾

  • 如何解决robot api结果没有显示keyword信息
  • 第一种使用allure
  • 第二种使用RobotSettings, 配置options(更多options, 参考源码。路径: robot/conf/settings.py)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值