如何在robot.api中调用侦听器类?

时间:2018-07-11 01:19:31

标签: python robotframework

我有一堆使用robot.api执行的测试套件。

例如,

from robot.api import TestSuite,ResultWriter
tc_dict = {
            'test case #1' : 'Passed'
            'test case #2' : 'Failed'
           }
suite = TestSuite('tests_with_listener.robot')
for k,v in tc_dict.items():
    test = suite.tests.create(k)
    test.keywords.create('should be equal',args=(tc_dict[k],'Passed'))
result = suite.run(output=xml_fpath)

robot.api中有什么方法可以执行以下代码?

robot -b debug.txt --listener <ListenerLibrary> tests_with_listener.robot

2 个答案:

答案 0 :(得分:2)

robot.api的文档中,可以找到以下注释:

  

与命令行入口点相关的API通过以下方式直接公开   机器人根包。

所引用的文档为robot.runrobot.run_cli

答案 1 :(得分:2)

最后,浏览完机器人框架源代码后,我得到了答案。该解决方案很简单,但是在robot.api文档中没有充分说明。

来自TestSuite类的RF源代码的run(settings=None, **options)方法

  

如果使用options,则它们的名称与长命令行相同           选项,但不带连字符,它们也具有相同的语义。           可以在命令行上多次给出的选项可以是           作为variable=['VAR1:value1', 'VAR2:value2']之类的列表传递。           如果仅使用一次这样的选项,则也可以将其作为一个选项使用           像variable='VAR:value'这样的字符串。

from robot.api import TestSuite,ResultWriter
tc_dict = {
            'test case #1' : 'Passed'
            'test case #2' : 'Failed'
           }
suite = TestSuite('tests_with_listener.robot')
for k,v in tc_dict.items():
    test = suite.tests.create(k)
    test.keywords.create('should be equal',args=(tc_dict[k],'Passed'))
result = suite.run(xunit=xunit_fpath,report=html_fpath,log=log_fpath,listener='AllureReportLibrary.AllureListener')