如何在 TestNG 中执行失败的测试用例
在本教程中,您将学习-
- 创建一个 Selenium 项目
- 将 Selenium 项目转换为 TestNG 并执行
- 通过命令行执行 TestNG
- 如何只运行失败的测试用例
- 从命令行运行 testng-failed.xml 文件
创建一个 Selenium 项目
准备项目
步骤 1) 在 Eclipse 中,通过单击“新建 Java 项目”创建Java项目
步骤 2) 在此步骤中,
- 输入项目名称
- 选择执行环境
- 选择项目布局选项
- 单击“完成”按钮。
当您单击“完成”按钮时,将创建“TestProject”Java 项目。“TestProject”将如下所示。
步骤 3) 打开新创建的项目。您将在“包资源管理器”中看到“src”文件夹。
- 右键单击项目并选择“新建”
- 选择选项“包”
步骤 4) 在此步骤中,
- 浏览 src 文件夹并选择包
- 输入包名称,然后
- 最后,单击“完成”按钮。(包名称 -> com.test)
单击“完成”后,项目结构将如下所示
步骤 5) 在此步骤中,
- 现在,右键单击新创建的包,然后
- 选择选项“类”。
将打开一个新窗口。
步骤 6) 在此步骤中,
- 输入“类”名称
- 选择修饰符
- 浏览并选择超类 java.lang.object
- 单击“完成”按钮。
在这里,您正在创建两个类,例如:DemoA、DemoB。
首先创建类 DemoA。
当您单击“完成”按钮时。它将创建如下所示的类
同样,创建类 DemoB,当您单击“完成”按钮时,类将如下所示-
步骤 7) 如果您已安装 TestNG 库,只需单击“Java 项目”—>“属性”。
步骤 8) 现在在属性窗口中,
- 单击“Java 构建路径”
- 单击“库”
- 单击“添加库”。
下一步
- 单击“TestNg”,然后
- 单击“下一步”。
然后单击“完成”按钮。
之后,编写以下代码。
对于类 DemoA
代码解释
- Driver.manage().window().maximize();
此行将最大化浏览器窗口。
- driver.get(https://www.google.co.in);
此行将在 URL 字段中输入指定的 URL。
- driver.findElement(By.name(“q”)).sendKeys(“Hi”);
此行将识别“Google”搜索框并使用 sendKeys 方法输入您发送的数据。
输出:上述程序包含错误,因此无法执行。
同样对于类 DemoB,
红色下划线单词是这里的错误。因为您尚未添加包含这些类和接口的 jar 文件。为了消除上述代码中存在的错误,请添加相应的 jar 文件。右键单击 Java 项目并选择“属性”。
步骤 8) 在属性窗口中,
- 单击左侧导航窗格上的“Java 构建路径”。
- 单击“库”选项卡,
- 单击“添加外部 JAR”并选择 Selenium-standalone jar 文件
- 单击“确定”按钮。
此步骤之后,所有错误将自动消除。如果不是,请将鼠标放在显示错误的代码上,并导入所有必要的类和接口。
对于 @test,如果它仍然显示错误,请将鼠标放在那里。它将显示可能的选项。然后单击“添加 TestNG 库”选项。同样,对其他“类”也这样做。
在两个类(即 DemoA、DemoB)中编写代码后,进入下一步。
步骤 9) 在此步骤中,
- 右键单击项目并
- 选择选项“文件夹”以创建一个名为“lib”的文件夹,并粘贴 testNG jar 文件和 selenium jar 文件 (selenium-server-standalone
)。(Testng 和 Selenium-server-standalone jar 文件需要从网上下载并存储在您的系统中。您需要手动转到该文件夹并复制这两个 jar,然后右键单击 Eclipse 中存在的“lib”文件夹并单击“粘贴”)
步骤 10) 在此步骤中,
1. 选择父文件夹
2. 将文件夹名称命名为“lib”,并且(在 lib 文件夹中添加这两个 jar 文件的主要目的是,在从命令行执行时,您可以告诉编译器执行程序所需的 jar 文件存在于此位置。如果您想从 Eclipse 执行 testng.xml,则完全不需要此 lib 文件夹)
3. 单击“完成”按钮
Testng 和 Selenium-server-standalone jar 文件需要从网上下载并存储在您的系统中。您需要手动转到该文件夹并复制这两个 jar,然后右键单击 Eclipse 中存在的“lib”文件夹并单击“粘贴”
创建文件夹后,下一步是将我们的程序 DemoA 和 DemoB 转换为 Testng.xml 文件。
将 Selenium 项目转换为 TestNG 并执行
步骤 1) 在此步骤中,
- 选择包下存在的两个 Java 文件并右键单击。
- 选择名为“testNG”的选项。
- 单击“转换为 testNG”。
步骤 2) 将打开一个新窗口。在此窗口中,输入详细信息,例如
- 地点
- 套件名称
- 测试名称
- 类选择
- 并行模式
- 单击“完成”按钮
然后,在 Java 项目下创建 testng.xml 文件,它将如下所示。
(如果您想运行该 testng.xml 文件,请右键单击包资源管理器左侧导航窗格中存在的 testng.xml 文件,然后单击“运行为 TestNG 套件”。)
步骤 3) testng.xml 套件文件将如下所示
如果您想首先执行 DemoA 类,则删除该完整行并将其添加到 DemoB 类之前,如下所示
步骤 4) 执行 testng.xml 文件后,它将以以下方式显示结果。(由于您没有使用 System.out.println() 编写任何可执行语句,因此它不会在控制台窗口上打印任何内容)。
这是通过 Eclipse 执行测试的一种方式,如果您想从命令行执行包含两个类文件(例如 DemoA、DemoB)的相同 testng.xml 套件文件,您需要遵循以下步骤。
现在打开命令行并转到项目工作区。
通过命令行执行 TestNG
您需要找到项目空间的位置
步骤 1) 首先右键单击 Java 项目并选择属性选项。在属性窗口中选择选项资源。
步骤 2) 现在,当您单击左侧导航窗格中存在的“资源”链接时。它将显示项目确切的存储位置
项目工作区是 C:\Users\User\Desktop\Guru99\TestProject。因此,您将更改目录到该特定位置。
步骤 3) 然后输入以下命令。(此命令是通用命令)
java –cp “工作区中lib文件夹的路径\*; 项目工作区中bin文件夹的路径; 项目工作区中lib文件夹中testng.jar文件的路径” org.testng.TestNG testng.xml
但对于我们的项目,您需要编写以下命令。
Java –cp "C:\Users\User\Desktop\Guru99\TestProject\lib\*; C:\Users\User\Desktop\Guru99\TestProject\bin" org.testng.TestNG testng.xml
步骤 4) 然后按 Enter。DemoA 和 DemoB 两个类将开始执行。最后,它将在命令行上显示结果。
如何只运行失败的测试用例
如果您只想通过 Eclipse 执行失败的测试用例,那么首先刷新项目。
步骤 1) 右键单击 Java 项目 (Demo A 和 B)。
选择刷新选项,或者只需选择 Java 项目并按 F5。
步骤 2) 然后您将能够看到 test-output 文件夹。
在该文件夹中,您有一个名为 testng-failed.xml 的文件。
步骤 3) 右键单击此文件并单击“运行为”,然后选择名为“TestNG 套件”的选项。
假设您有三个测试用例,如果所有测试用例都成功执行,则您将无法在 test-output 文件夹下看到此文件夹。此文件夹仅在其中一个测试用例失败时才会出现。然后运行此文件,它将只运行失败的测试用例。
从命令行运行 testng-failed.xml 文件
步骤 1) 要在命令行中运行失败的测试用例。打开命令行并转到项目工作区。
我的项目工作区是 C:\Users\User\Desktop\Guru99\TestProject。因此,您将更改目录到该特定位置。
步骤 2) 输入以下命令。(此命令是通用命令)
java –cp “工作区中lib文件夹的路径\*; 项目工作区中bin文件夹的路径; 项目工作区中lib文件夹中testing.jar文件的路径” org.testng.TestNG test-output/testng-failed.xml
对于我们的项目,您需要编写以下命令。
Java –cp "C:\Users\User\Desktop\Guru99\TestProject\lib\*; C:\Users\User\Desktop\Guru99\TestProject\bin" org.testng.TestNG test-output/testng-failed.xml
步骤 3) 然后按 Enter。它将只运行失败的类并只显示与该类对应的信息。
在上面的类(即 DemoB)中,只需像这样更改代码。
driver.findElement(By.name("a")).sendKeys("Bye");
上述代码将找不到任何元素。因此,它将抛出异常。但在我们的程序中,您没有处理异常,因此我们的程序将停止执行剩余的代码。由于此原因,ClassB 将失败。
摘要
- TestNG 是一个受 Junit 启发并包含不同注解的自动化测试框架。
- TestNG 生成标准报告,其中包含以下内容
- 有多少个测试用例?
- 有多少个测试用例通过了?
- 有多少个测试用例失败了?
- 有多少个测试用例被跳过了?
- 多个测试用例可以轻松分组,并通过将测试类转换为测试套件文件来执行它们。
- TestNG 可以轻松地与其他第三方工具集成。它提供了不同的功能,例如为测试用例分配优先级、使用调用计数多次执行相同的测试用例。
- 如果在执行多个测试用例时有任何测试用例失败,您可以单独执行该特定测试用例。
- Reporter 类的静态方法“log”可用于存储 org.testng 中存在的日志信息