我是TeamCity / Spiratest的新手,并且有以下要求: (a)我们必须让TeamCity运行Calabash测试和 (b)然后如果出现故障必须通过记录到JIRA的屏幕截图来获取缺陷 (c)最后更新SpiraTest(我们的测试管理工具)中的通过/失败状态
我遇到了另一个主题:Test Automation: TeamCity with Selenium and SOAPUI and Calabash;但不能问那里;所以,在这里发布一个新主题。
(A)您能否详细说明如何配置TeamCity以运行calabash-ios测试?
(B)如果您对如何将结果与测试管理工具SpiraTest集成有一个想法,并在JIRA中记录失败测试的缺陷;这将是一个很大的帮助。
期待投入。
非常感谢,
答案 0 :(得分:3)
我正在跟进this Calabash-iOS group thread的问题。 不能告诉你很多TeamCity或Selenium,我们正在使用Bamboo和JIRA,我刚开始考虑将Calabash测试与JIRA集成。
TeamCity,Bamboo或Jenkins之间不应有任何重大差异。它们都支持运行自定义shell脚本。你需要在你的CI盒子上安装Ruby以及所需的所有宝石(黄瓜,葫芦黄瓜和其他宝石)。 以下是我们用于测试的Bamboo CI计划的示例
最后一部分是一个简单的shell脚本,类似于
cucumber -p smoke-test
这将运行冒烟测试配置文件并以HTML格式创建测试报告。 然后你可以使用Cucumber Test Report插件。我肯定知道Jenkins和Bamboo有一个,所以应该是TeamCity的一个,或者只是选择HTML并将其作为测试结果发布。
我刚开始研究,这是一些调查结果。
Atlassian为其所有产品here's the link on their marketplace提供了一套CLI。 这是一套完整的工具,如果您不想下载所有工具,可以在市场上搜索仅限JIRA的包。
这些工具具有适用于类UNIX系统的 .sh 脚本和适用于Windows的 .bat 文件。 这是documentation for jira command,这里是some examples。 在CI框上安装工具,更新所有路径,您将能够使用CI任务中的Atlassian命令,甚至可以使用Cucumber步骤和场景钩子。
对于Mac OS X,atlassian和jira cli有几个自定义自制软件点击,但每个都以不同方式安装工具,两者都已过时并安装旧版本的cli。
此外,还有一个名为jira-ruby的Ruby宝石,你必须在Mac OS X上安装atlassian-plugin-sdk homebrew tap。我还没有尝试使用这个宝石,但看起来很有希望。< / p>
这是我现在要做的事情。
使用JIRA,您确定会为项目提供这些用户故事,错误和其他类型的问题。 通常,黄瓜场景将与某个用户故事相关,或者您可以为一个用户素材创建多个场景,或者甚至在多个用户故事之间共享一个场景。
我们还有一些场景是针对JIRA中特定错误的回归测试。
无论如何,您可以使用标签将Calabash / Cucumber场景链接到JIRA问题和项目。 使用项目名称标记每个要素,例如 @ JIRA-PROJECT-&lt; PROJECT-NAME&gt; ,还标记JIRA问题名称 @ JIRA-ISSUE-&lt; ISSUE-NAME&gt; < /强>
这是一个例子
@JIRA-PROJECT-X
Feature: Some Feature for project X
Feature Description
@JIRA-ISSUE-X-123
Scenario: Some Scenario for User Story or Bug X-111
<steps>
然后使用After Scenario Hooks。 执行挂钩时,您拥有Scenario class的场景对象。 此对象包含更新JIRA所需的所有信息。 它有传递?和失败?方法,更重要的是所有标记。
puts scenario.source_tag_names.join(", ")
# => @JIRA-ISSUE-X-123, @JIRA-PROJECT-X
现在,您可以从标签中找出JIRA项目和所有相关问题,并为每个问题创建测试会话。测试会话只是具有适当父级的“测试”类型的另一个问题。请参阅下面的粗略示例,需要修改它以针对与场景相关的每个问题创建测试会话。
After do |scenario|
project = scenario.source_tag_names.find { |t| t.start_with?("@JIRA-PROJECT") }.gsub("@JIRA-PROJECT-", "")
issue = scenario.source_tag_names.find { |t| t.start_with?("@JIRA-ISSUE") }.gsub("@JIRA-ISSUE-", "")
summary = "<Test Summary, passed or failed, etc..."
# use proper jira executable name depending on your installation
system("jira.sh -s <jira-server> -u <jira-user> -p <jira-password> -a createIssue --project #{project} --type test --summary '#{summary}' --parent #{issue}")
# the same can be done using jira-ruby gem
end
另一种方法是让Calabash先运行它,然后解析HTML报告并在一个批次中用测试结果更新JIRA。 JIRA CLI对此进行了特殊处理,称为运行(也是 runFromCsv 等)。
您可以使用场景挂钩将JIRA操作写入文件,并在测试完成后将此文件与JIRA CLI run 操作一起使用,而不是解析HTML。
由于我是第一次这样做(整个Calabash&amp; JIRA集成),我不能确定这是正确的做事方式。 JIRA有一些名为Behave的插件,可能就是你所需要的。不过,我不知道它是否适合与Calabash合作。