java - TestNG 和 Selenium : Perform CRUD operations on entities with depedencies

标签 java selenium selenium-webdriver automation testng

我是 Selenium 和 TestNG 的新手,我无法按顺序执行脚本。 我必须对用户位置设备配置文件<等实体执行CRUD操作/em>,角色,它们之间有依赖关系。

我为对每个实体执行的每个操作(使用注释)创建了一个单独的组,例如 addGroupeditGroupdeleteGroup对于上面的每个实体依此类推。 一些实体依赖于其他实体

添加组

@Test(dependsOnGroups={"loginGroup"},groups="addGroup")
 public void AddGroup() {}

编辑组

editGroup依赖于addGroup操作,如下

@Test(dependsOnGroups = { "loginGroup","addGroup"}, groups = "editGroup")
 public void editGroup() {}

删除群组

@Test(dependsOnGroups={"loginGroup","addGroup","deleteLocation"},groups="deleteGroup")
 public void deleteGroup() {}

添加位置

AddLocation操作依赖于AddGroup。

@Test(dependsOnGroups = {"loginGroup", "addGroup" }, groups = "addLocation")
 public void addLocation() {}

编辑位置

editLocation 依赖于 AddLocation

@Test(dependsOnGroups = { "loginGroup","addLocation"}, groups = "editLocation")
 public void editLocation() {}

删除位置

deleteLocation 依赖于 addLocation 操作

@Test(dependsOnGroups={"loginGroup","addLocation"},groups="deleteLocation")
 public void deleteLocation(String locationId) {}

添加角色

@Test(dependsOnGroups = { "loginGroup"}, groups = "addRole",dataProviderClass=AddNewRoleDataProvider.class)
 public void addRole() { }

编辑角色

editRole 依赖于 addRole

@Test(dependsOnGroups = { "loginGroup","addRole"}, groups = "editRole")
 public void editRole() {}

删除角色

deleteRole 依赖于 addLocation 操作

@Test(dependsOnGroups = { "loginGroup", "addRole", "deleteUser" }, groups = "deleteRole")
 public void deleteRole() { }

添加用户

AddUser 操作依赖于 AddLocation、AddGroup、AddRole 操作。

@Test(dependsOnGroups = {"loginGroup", "addGroup", "addLocation","addRole"}, groups = "addUser")
 public void AddUser() { }

编辑用户

editUser操作依赖于addUser操作

@Test(dependsOnGroups = { "loginGroup","addUser"}, groups = "editUser")
 public void editUser() { }

删除用户

删除用户操作依赖于addUser操作

@Test(dependsOnGroups = { "loginGroup","addUser"}, groups = "deleteUser")
 public void deleteUser(String userId) throws Exception {}

现在我想将此操作作为套件运行,以下是将此脚本作为套件运行的代码

@Test(dependsOnGroups={"addGroup","addLocation","addRole","addUser",
   "editGroup","editLocation","editRole","editUser",
   "deleteUser","deleteLocation","deleteRole","deleteGroup"})
 public void startSuite() {}

当我运行我的套件时,它将在添加用户之前删除位置,从而终止 addUser 操作。

最佳答案

我认为你让这个场景有点过于复杂,在类中单独测试每个实体不是更容易吗?就像

@Test(dependsOnGroups = {"loginGroup", "groupCrud", "locationCrud","roleCrud"}, 
       groups = "userCrud")
public TestUserCrudOperations {

    @Test(priority = 0)
    public void addUser() {}

    @Test(priority = 1) 
    public void editUser() {}

    @Test(priority = 2)
    public void deteleUser() {}

   //method with lower priority is executed first

}

通过将测试分离到这样的类中,您将获得更具可读性和可维护性的代码(并且您也将避免拥有太多具有困难依赖性的组)。

关于java - TestNG 和 Selenium : Perform CRUD operations on entities with depedencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25013177/

相关文章:

java - 基于矩阵的 2D 点旋转

java - JAX-WS 删除换行符

javascript - 无法使用selenium在onclick中执行javascript

java - 如何计算总数使用 selenium webdriver 从特定 TR 标签中提取 TD 标签

java - 如何等待页面加载后再执行下一步操作?

Java项目在windows和linux下显示不同进程数

java - "Partially"POJO排序列表

selenium - 从 CruiseControl.NET 执行命令行命令

javascript - 如何在 Protractor 中的套件之间共享相同的测试用例

java - Selenium WebDriver 中的 MouseHover 和 Click 事件