我如何 运行 机器人框架测试基于 git 提交?

How do I run robot framework tests based on git commits?

我们正在开发一个 Web 应用程序,我们在其中 运行 机器人框架进行回归测试。我希望能够 运行 基于来自 git 的标签的特定机器人框架测试,这样我就不必每次都 运行 完全回归。

目前我使用 Jenkins 来执行 windows 批处理命令。我的第一份工作是从存储库中提取所有内容。

cd /d C:\home\(Repository here)
git pull --summary

我的第二份工作运行是我指定的测试,目前是完全回归。

robot -P C:\home\(Repository root here) C:\home\(Path to test cases)

有没有办法运行根据git中的某些标签进行特定测试?例如 运行 宁 "Login" 测试是因为有人推送了一个在他们的提交消息中有 [Login] 标签的提交。

这是一个测试套件示例。

文件名 = C:\home(Repo)\Regression\Common\Login\LoginTestSuite.txt

*** Settings ***
Documentation    Login Test Suite
Suite Setup    Suite Setup
Library    SeleniumLibrary
Force Tags    LoginTests

*** Test Cases ***
User A Login Test
[Documentation]    This is documentation
[Tags]    Requirement A
(Test Steps Here)

附加信息

机器人框架版本:3.0.4

应用程序前端:AngularJS

应用程序后端:C#

根据评论中的讨论,您的目标是 运行 Robot Framework 测试具有特定标签;这些标签来自最新合并中的 git 标签(我们称它们为 "gtags",以区分两者)。

一个通过 --include command-line option 根据标签指定案例 运行;因此,如果 gtags 包含 "LoginTests",您将 运行 只有这样的标签:

robot -P C:\home\(Repository root here) --include logintests C:\home\(Path to test cases)

如果 gtag 不止一个,假设它们是 (LoginTests, LogoutTests),您可以附加更多 --include 选项:

--include logintests --include logouttests

另一种选择是将它们组合在一个 include 参数中 - RF 允许通过使用内部的 "AND"、"OR" & "NOT" boolean operators值:

--include logintestsORlogouttests

使用 "AND" 只会选择具有两个标签的案例,"OR" - 具有任一标签的案例(听起来像你的案例),"NOT" 否定后续 -上逻辑。这三个控制字符串 区分大小写.

当然,要使此方案起作用,gtag 必须与您在测试用例中放置的 gtag 相同。如果不是,则必须添加一些逻辑以将 gtag 映射到案例中的 gtag ("Login" -> "logintests")。

RF中的标签被归一化——转换为小写并删除所有空格;对于 RF "LoginTest" == "Login Test" == "login test" == "logintest" (尽管不鼓励使用空格 - 在源代码中放置两个太容易了,因此为案例分配了两个单独的标签)。因此,无论 gtags 的大小写如何,如果标准化后字符串相同,它们就会匹配。