teamcity

时间:2016-02-10 22:03:32

标签: python teamcity robotframework teamcity-9.0

我正在通过teamcity构建运行机器人框架测试。我可以将结果log.html放入工件中。但是在机器人框架的teamcity中是否有任何插件,所以我可以在项目中填充结果?

更新

非常感谢!我在套件中添加了py文件,如下所示

class TeamCityListener():

    ROBOT_LISTENER_API_VERSION = 2

    def start_suite(self, name, attrs):
        sys.__stdout__.write("##teamcity[testSuiteStarted name='{name}']\n".format(name=name))
        print 'hi'
        sys.__stdout__.flush()

我从teamcity调用它为pybot --listener TeamCityListener.py --console none test.robot但是当我在项目中运行时,我看到Step 1/1和他们Success我是否必须在teamcity方面添加任何内容?在运行pybotssh进入机器之前,可能是因为这个原因?

1 个答案:

答案 0 :(得分:1)

TeamCity有一个用于集成外部工具的API。简而言之,如果您的测试以TeamCity定义的格式打印结果,TeamCity将在仪表板上显示结果。

此API的概述可在此处找到:https://confluence.jetbrains.com/display/TCDL/Build+Script+Interaction+with+TeamCity

我接触这个的方法是创建一个自定义监听器。在其中,各种方法(start_suiteend_suite等)都只是以给定的格式发出消息。

例如,start_suite侦听器方法如下所示:

class TeamCityListener():
    ...
    def start_suite(self, name, attrs):
        sys.__stdout__.write("##teamcity[testSuiteStarted name='{name}']\n".format(name=name))
        sys.__stdout__.flush()

其他方法几乎相同,只是写入stdout的实际文本不同。

然后,在运行我们的测试时,我们使用此监听器并关闭默认输出:

pybot ... --listener TeamCityListener.py --console none ...

您需要以类似的方式实现侦听器的某些其他方法。例如,end_testend_suite是您报告测试成功或失败的位置。您还可以使用log_message在团队城市信息中心中显示错误消息。