如何基于git commit运行机器人框架测试?

时间:2019-01-04 20:23:03

标签: git selenium jenkins robotframework git-extensions

我们正在开发一个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]标签的提交。

这是一个测试套件的例子。

FileName = 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#

1 个答案:

答案 0 :(得分:4)

通过评论中的讨论,您的目标是运行具有特定标签的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(“登录”->“ logintests”)。

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