知识的宝藏
10年测试老司机,先后在某知名互联网公司担任过测试组长、某龙头物流公司担任测试开发、高级测试工程师,现在某知名手机厂担任高级测试工程师一职,熟悉领域包括功能测试、性能测试、自动化测试、接口测试、测试开发、数据分析、网络爬虫、Java语言、Python语言、持续集成、单元测试、质量体系建设等。
展开
-
如何在TestNG中恢复失败的测试用例?
有时,案例失败,不是因为应用程序错误,而是因为意外事件,如浏览器问题,网络滞后等,现在,我们可能需要重新验证失败的案例,看看这些意外事件是否仍然存在。现在,有两个用例失败了(test 2和test 3),并且必须在testng-output中创建一个testng-failed.xml文件,该文件可用于运行失败的测试用例。但是有时候,我们不想把重试算在所有的用例中,而只想显示在我们的测试类中已经写好的用例的数量。您可能已经注意到,每当我们重试案例时,我们的总案例数就会增加,跳过的案例数也会增加。原创 2024-04-24 21:42:01 · 1448 阅读 · 0 评论 -
如何在TestNG中忽略测试用例
但是,我们不能只是将@Ignore注释放在包的顶部,如下面的代码所示。在这篇文章中,我们将讨论如何在TestNG中忽略测试用例。TestNG帮助我们忽略使用@Test注释的情况,我们可以在不同的级别上忽略这些情况。因此,如果我们在一个类上放置@Ignore注释,那么该类及其子类中的case将被忽略。所以,现在在这个文件中,我们可以在Test包上写@Ignore,如下所示。注意:@Ignore注释的优先级高于单个@Test方法注释。这里,子类的case没有执行,因为我们在父类上使用了@Ignore注释。原创 2024-04-23 21:13:41 · 854 阅读 · 0 评论 -
TestNG中的方法拦截器(重新排序测试方法)
下面是我们的CodekruTest类,但我们已经修改了它,以按照特定的顺序运行方法。我们可以看到,deltaMethod是在最后执行的,因为它依赖于另一个方法,而另一个方法又依赖于另一个方法。它将在其参数中接受可以以任何顺序运行的方法列表,并返回类似的方法列表。在这里,我们希望首先运行属于“func”组的方法,其余的方法应该在之后执行。它将返回在其参数中传递的方法的类似列表,并且返回的列表可以是-运行我们的测试用例。让我们先拿一个测试类的例子,在这个类中我们将尝试使用方法拦截器来改变测试方法的顺序。原创 2024-04-16 21:03:32 · 1022 阅读 · 0 评论 -
如何在TestNG中向DataProvider传递参数?
然后,我们可以将它们串联起来,展示如何将数据从方法传递到数据提供者。我们已经将“website”的属性值设置为“Codekru”,现在将尝试在数据提供程序中检索此值。您可以看到打印出了网站名称,这就是我们如何将值从测试方法传输到TestNG中的数据提供程序。我们将@CodekruTestAnnotation放在我们的测试方法上,如下所示。它提供了有关类或接口上的单个方法的信息,并提供了对这些方法的访问。我们可以使用许多其他有用的方法来访问数据提供程序中的方法及其信息。这为我们的注释提供了运行时可见性。原创 2024-04-09 20:39:36 · 544 阅读 · 0 评论 -
如何在Eclipse IDE中安装TestNG插件
TestNG应该安装在你的eclipse IDE中。如果你在安装TestNG时遇到任何问题,那么你也可以参考下面的视频。在这篇文章中,我们将介绍如何在Eclipse IDE中安装TestNG插件,我们还在文章末尾放置。现在,通过单击Restart Now重新启动Eclipse,或者您也可以手动进行。6.然后单击提示符中的“Restart now”按钮重新启动eclipse。在重新启动eclipse之后,TestNG应该安装在您的机器上。2.在输入框中键入TestNG,然后单击安装。原创 2024-01-15 22:33:53 · 940 阅读 · 0 评论 -
什么是TestNG以及如何创建testng.xml文件?
TestNG使用testng.xml文件来运行用例,我们将看到如何创建testng.xml来执行我们的测试用例。我们可以省略一些标签,比如不强制提到package标签,因为每个标签都有一个用途,有时我们不需要标签。在项目的根目录下创建一个名为“testng.xml”的新文件(您可以为该文件命名任何名称,没有必要保持名称为testng.xml)因为我们只有一个测试用例,所以它将是这种情况,我们将在控制台上看到下面的输出。在移动之前,让我们创建一个项目,通过testng.xml文件运行一个测试用例。原创 2024-01-15 22:26:13 · 2003 阅读 · 0 评论 -
TestNG注释- @AfterTest注释
那么,让我们看一个例子。我们将在XML文件中使用上面提到的两个类,我们可以在test标记中的任何类中保留@AfterTest注释方法。好吧,要知道这一点,我们必须尝试一下。让我们在CodekruTestSecond类中也有一个@AfterTest注释的方法。@AfterTest注释在测试标记类中的所有测试用例执行之后执行。下面的XML将说明@AfterTest注释方法的执行点。在这里,我们可以看到@AfterTest注释在类中的所有测试用例之后运行。现在,运行下面的XML文件,让我们看看会发生什么。原创 2024-01-23 21:14:35 · 504 阅读 · 0 评论 -
TestNG中的类级注释
相反,我们可以做的只是在类级别编写@Test注释,这将使类中存在的所有方法都成为测试方法,即使它们没有注释。您知道TestNG为我们提供了一个很棒的特性,它允许我们在类级别而不是方法级别定义注释吗?在这里我们可以看到,所有的测试方法都执行了两次,除了gammaMethod,它只执行了一次。在这里,测试方法将同时具有类级别的注释属性和方法级别的注释属性,如下面的示例所示。下面是我们的CodekruTest类,我们将在类级别使用@Test注释。在这里,方法级别属性值将覆盖类级别属性值,如下面的示例所示。原创 2024-01-19 21:37:04 · 360 阅读 · 0 评论 -
TestNG注释- @BeforeTest注释
在这里,您可以看到超类中的beforeTest()方法在子类的case之前执行。这是因为子类继承了超类的方法,但是如果我们将beforeTest()方法设置为私有,那么它就不会被执行,因为子类不会继承它。因此,@BeforeTest注释方法将在test标记之前执行。我们可以在test/test标记中提到的任何类中定义@BeforeTest注释方法。在这篇文章中,我们将学习TestNG中的@BeforeTest注释。因此,我们可以看到这两个带注释的方法都在套件中的测试用例实际执行之前运行。原创 2024-01-23 21:03:38 · 646 阅读 · 0 评论 -
TestNG @AfterClass 注解
但是,如果我们将afterClassMethod设置为私有,它将不会运行,因为私有方法不能被子类继承。@AfterClass注释的方法将在特定类中的所有测试用例运行后运行。现在,我们将采用两个类(CodekruTestFirst和CodekruTestSecond),并在每个类中保留一个带@AfterClass注释的方法。是的,我们可以在一个类中放置多个@AfterClass注释的方法,然后所有这些注释的方法都将在该类的所有测试用例执行后运行。现在,我们将在testng.xml下面运行,看看会发生什么。原创 2024-01-24 21:03:14 · 697 阅读 · 0 评论 -
@Test Annotation属性- dependsOnMethods属性
不,没有测试的执行顺序,所以,如果我们通过一个测试列表,如@Test(dependsOnMethods = {“test1″,“test 2”}). TestNG可以先执行test1或test 2,但可以保证它们将在使用dependsOnMethods属性的测试方法之前运行。因此,后一个测试用例将首先执行,因为它的执行对于运行依赖于它的用例是必要的。dependsOnMethod属性将接受一个字符串数组,如{“test1”,“test 2”},如果一个测试只依赖于另一个测试,你也可以传递“test1”。原创 2024-01-31 21:25:22 · 1154 阅读 · 0 评论 -
@Test Annotation属性- alwaysRun属性
如果alwaysRun是在没有dependsOnMethods或dependsOnGroups属性的情况下编写的,它将被忽略因此,最好将其与dependsOnMethods或dependsOnGroups一起使用。让我们尝试运行一个依赖于另一个测试方法(dependsOnThis,也在下面显示)的测试用例(testMethod,如下所示),而不使用alwaysRun属性,看看会发生什么。这就是alwaysRun属性的功能。现在,让我们尝试相同的代码,但我们将使用alwaysRun属性,看看会发生什么。原创 2024-01-30 21:09:09 · 484 阅读 · 0 评论 -
TestNG注释- @BeforeMethod
BeforeMethod注释方法将在类中的每个测试用例或方法之前执行,但在。因此,如上面的XML所示,@BeforeMethod注释方法在类中的每个测试用例(或XML文件中提到的)之前执行。让我们在CodekruTestFirst类中保留两个带@BeforeMethod注释的方法,看看当我们运行该类时会发生什么。因此,这意味着@BeforeMethod注释将运行与特定类中的测试用例一样多的次数。下面的XML将帮助您理解@BeforeMethod注释方法的执行点。运行XML文件后的输出。原创 2024-01-25 21:26:00 · 459 阅读 · 0 评论 -
TestNG中的@BeforeSuite注释
我们可以在一个类中使用多个@BeforeSuite注释方法,并且所有方法都将在套件中的测试用例之前运行。@BeforeSuite注释是TestNG中所有@BeforeXXX和@AfterXXX注释中的最高优先级。这意味着任何带有@BeforeSuite注释的方法都将在套件中的任何其他测试之前执行。我们将采用两个类(CodekruTestOne和CodekruTestSecond),并在CodekruTestSecond类中定义@BeforeSuite注释方法。它提供了各种注释,帮助规范测试执行。原创 2024-01-22 21:08:20 · 562 阅读 · 0 评论 -
TestNG groups的详细示例
比如,我们可以有一组测试用例,只确定系统的功能,然后有另一组测试用例,将验证系统的UI部分,以及更多类似的测试用例。(它们可能在不同的类,不同的包中)等等。所以,让我们假设我们有一个属于功能组的测试用例,因为它测试系统的功能,但现在由于某种原因而被破坏。我们可以把这个测试放到一个破组中,然后把它从执行中排除出去,这样我们就可以把所有这样的测试用例放到这个破组中,然后阻止这个破组本身执行。这里我们可以定义一个新的组(比如all),它将包含两个组(group1和group2),并将运行该组的两个测试用例。原创 2024-01-16 20:44:09 · 1097 阅读 · 0 评论 -
TestNG @BeforeClass 注解
在这篇文章中,我们将讨论TestNG中的@BeforeClass注释。@BeforeClass注释方法将在特定类的测试用例之前运行。原创 2024-01-24 20:55:59 · 528 阅读 · 0 评论 -
如何从命令行运行testng.xml?
也许您已经创建了一个maven项目,现在想使用命令行运行testng.xml文件,或者您是TestNG的新手,只是想了解一下。好了,就是这样,我们成功地创建了一个新的java项目,并使用命令行工具运行了testng.xml。现在,是时候看看如果我们有一个现有的maven项目,并希望执行该项目的testng.xml,我们应该做什么了?现在,转到您的项目路径,并在命令行工具中运行以下命令来执行您的testng.xml文件。现在,我们将使用命令行运行testng.xml,为此,您需要做一些事情,原创 2024-01-16 20:22:20 · 1372 阅读 · 0 评论 -
@Test Annotation属性– enabled attribute
在上面的场景中,两个测试用例都被执行了,现在,让我们看看如果我们在test1方法上使用enabled = false会发生什么。我们在test1方法上使用了“enabled = false”,因此test1()方法没有被执行,但test2()执行了。@Test注解有很多属性,enabled也是其中之一。在这篇文章中,我们将详细讨论enabled属性。让我们先看看在CodekruTest类的帮助下,在不使用enabled属性的情况下是如何工作的。当它的值为false时,该测试用例将不会被执行。原创 2024-01-31 21:15:06 · 171 阅读 · 0 评论 -
TestNG中的@AfterSuite注释
AfterSuite就是这样一个注释的例子,它使您能够在TestNG套件中的所有测试完成后执行特定的操作。@AfterSuite是TestNG注释套件的一部分,用于在套件中的所有测试运行后执行清理任务。正如我们所知,@AfterSuite注释的执行发生在所有测试执行之后。我们可以在一个类中使用多个@AfterSuite注释的方法,然后所有这些方法都会在该套件中的所有测试之后运行。在TestNG中,与@BeforeXXX和@AfterXXX注释相比,@AfterSuite注释具有最低的优先级。原创 2024-01-22 21:18:07 · 428 阅读 · 0 评论 -
TestNG注释
在这种情况下,TestNG保证@Before方法按照继承顺序执行(首先是最高的超类,然后沿着继承链向下),而@After方法则按照相反的顺序执行(沿着继承链向上)。TestNG是一个测试框架,旨在简化广泛的测试需求,从单元测试(隔离测试一个类)到集成测试(测试由几个类、几个包甚至几个外部框架组成的整个系统,如应用程序服务器)。那么,什么是注解呢?注释是元数据的一种形式,它提供有关程序的数据,而这些数据不是程序本身的一部分。现在,我们将在testng.xml文件下面运行,看看会发生什么以及输出的打印顺序。原创 2024-01-19 20:50:46 · 970 阅读 · 0 评论 -
TestNG @Test注释属性-expectedExceptions属性
在这篇文章中,我们将讨论TestNG中的exceptedExceptions属性。有时,在我们的测试用例中,我们需要验证是否发生了某些异常。这个属性将帮助我们实现这一点。它需要一个异常类数组并检查该异常是否发生。但是,如果列出的任何异常没有发生,它将通过该测试。原创 2024-03-05 21:09:30 · 308 阅读 · 0 评论 -
如何在TestNG中获取运行时的测试用例细节?
例如,我们可以使用onTestSuccess()方法来检索基本数据点,例如测试用例结果、运行时信息和其他相关细节,只要测试用例被标记为通过。通过利用这些功能,我们可以获得对自动化测试套件性能的有价值的洞察,并获得测试条件下应用程序行为的详细视图。我们只使用了onTestSuccess()方法,但根据您的需求,您可能还希望使用其他方法,例如onTestStart()或onTestFailure()。我们可能在不同的场景中需要这些信息,比如创建定制的报告或者开发一个实时跟踪系统来监视测试用例的进度。原创 2024-04-05 15:35:11 · 532 阅读 · 0 评论 -
TestNG Include and exclude
在这篇文章中,我们将详细讨论TestNG的包含和排除标签。下面是我们将在这篇文章中看到的要点-我们只能将exclude标记与packages、methods和run标记(groups的子标记,告诉我们要运行哪些组)一起使用。让我们看看上面提到的所有要点。在这里,我们将讨论包和子包,以及我们需要做些什么来包含或排除一些包。下面是我们将在示例中使用的结构。在这里,Practice是我们的顶级包,而Test1、Test2和Test3是我们的子包,每个子包都包含一个Test类。原创 2024-04-05 15:26:31 · 699 阅读 · 0 评论 -
有关在运行时生成testng.xml的更多信息
正如你所看到的,我们在CodekruTest类中有三个测试方法(test1、test2和test3),但是如果我们只想执行类中的两个测试方法(test1、test3),那该怎么办呢?首先,让我们创建一个测试类(比如CodekruTest)和一些案例,我们将在整个帖子中使用这些案例,并学习一些令人兴奋的东西。现在,类中的所有测试方法都将运行,测试报告保存在D:\Test文件夹中,而不是默认的测试输出文件夹中。现在,我们可以将上面的程序作为一个标准的java应用程序运行,它将产生与等价的XML文件相同的输出。原创 2024-04-04 16:35:51 · 1158 阅读 · 0 评论 -
TestNG @BeforeGroups 注解
在这里,我们可以看到TestNG只执行了beforeGroup()方法,因为@BeforeGroups annotated方法有与之关联的groups属性。因此,它总是首先执行@BeforeSuite和@BeforeTest注释的方法,然后它将转到class,只有这样它才会找到位于特定组中的测试并执行@BeforeGroups注释的方法。在这里,我们使用CodekruTestFirst类,并将尝试执行带@ BeforeGroups注释的方法沿着和@BeforeTest注释,以查看它们的执行顺序。原创 2024-01-26 22:12:18 · 765 阅读 · 0 评论 -
TestNG中的DataProviders(@DataProvider annotation)
Data Provider是我们类中的一个方法,它使用@DataProvider注释进行注释,并返回一个对象数组的数组,或者我们可以说是一个2D数组。但是使用数据提供程序,我们可以使用不同的数据集多次运行单个案例。到目前为止,我们制作了一个数据提供者,但还没有使用过,所以,我们将使用上面的数据提供者制作一个测试方法。使用上述数据提供程序的测试用例现在必须使用数据提供程序名称来提及数据提供程序类,如下所示。如果数据提供程序在另一个类中,则它应满足以下条件之一,以便在另一个类的测试用例中使用。原创 2024-01-30 21:03:46 · 1355 阅读 · 0 评论 -
如何将Maven与TestNG集成
默认情况下,Maven执行src/test/java目录中的单元测试用例,我们将只遵循这个规范,并在src/test/java目录中生成用例。如果你还记得的话,我们在前面添加了maven surefire插件,现在我们必须为插件添加一些配置。本文将介绍如何将Maven与TestNG集成,并在maven进入测试阶段时执行TestNG测试。接下来,将在我们运行命令的目录中创建一个maven项目,它将具有maven创建的默认项目结构。现在,从命令行运行“mvn test”命令,现在也将执行TestNG测试。原创 2024-03-29 22:26:50 · 894 阅读 · 0 评论 -
TestNG注释- @AfterMethod
因此,它将选择CodekruTestFirst类并运行其第一个测试用例,然后是@AfterMethod注释的方法,然后再次运行第二个测试用例,然后是@AfterMethod注释的方法,依此类推,直到所有用例都被执行。之前,我们讨论了@BeforeMethod注释,在这篇文章中,我们将讨论TestNG的@AfterMethod注释。因此,如上面的XML所示,@AfterMethod注释的方法将在类中的每个测试用例之后执行。了解这一点的最简单方法就是去做。下面的XML将帮助您理解带注释的方法的执行点。原创 2024-01-25 21:32:14 · 361 阅读 · 0 评论 -
TestNG @Test注释属性- threadPoolSize属性
然后,一个接一个地运行100个测试用例可能会花费大量的时间。因此,为了减少执行时间,我们可以在那里使用一个值(比如5)的threadPoolSize,现在测试用例将在并行实例中运行,并且用例将在更短的时间内执行。如果不使用invocationCount属性,我们将无法使用threadPoolSize。答案是,无论何时您想要多次并行地运行一个测试方法,您都需要这个属性。注意:如果没有定义invocationCount,threadPoolSize属性将被忽略。我们可以看到测试用例只执行了一次。原创 2024-03-05 21:03:37 · 402 阅读 · 0 评论 -
TestNg @Test的expectedExceptionsMessageRegExp属性
所以,这里test3()失败是因为抛出的异常消息与正则表达式不匹配,这就是我们在TestNG中使用expectedExceptionsMessageRegExp属性的方式。这里expectedExceptionsMessageRegExp将使用正则表达式(regex)来匹配抛出的异常消息。如果指定了expectedExceptions ,则其消息必须与此属性中指定的正则表达式匹配。因此,这意味着如果不先使用expectedparameter,我们将无法使用此属性。以了解有关常规异常符号的更多信息。原创 2024-03-18 21:23:09 · 283 阅读 · 0 评论 -
TestNG @AfterGroups 注解
我们将采用两个类(CodekruTest 1和CodekruTest 2)并将它们放在不同的包中,然后尝试使用@AfterGroups注释。但是,如果我们使用它,我们将能够看到@AfterGroups注释相对于其他注释的执行顺序。我们必须在“groups”属性中传递组的列表,我们希望为其运行@AfterGroups注释方法。默认情况下,TestNG将按照XML文件中的顺序运行我们的测试。@AfterGroups注释的方法在提到的组内的测试用例执行后执行。现在,要运行组的案例,我们必须执行下面的XML文件。原创 2024-01-26 22:32:10 · 433 阅读 · 0 评论 -
TestNG invocationCount属性
有时我们会遇到这样的问题,比如如何多次运行一个测试用例?invocationCount是这个问题的答案。在这篇文章中,我们将讨论在TestNG中与@Test annotation一起使用的invocationCount属性。因此,如果您有一个需要多次运行的测试用例,invocationCount可以帮助您。@Test(invocationCount = num)其中num =您希望运行此测试方法的次数。所以,在这里我们可以看到test()运行了五次。在这里,测试用例甚至不会运行,如下面的示例所示。原创 2024-02-15 18:11:28 · 683 阅读 · 0 评论 -
TestNG @Test属性-priority attribute优先级属性
所以,我们可以说,如果我们没有优先级,所有测试用例的优先级值都为0(这意味着所有用例都具有相同的优先级)。这是相同的场景,我们没有分配任何优先级,所有测试方法的优先级都为0。因此,如果两个测试方法具有相同的优先级,则执行顺序也将按照其测试名称的字母顺序排列。在前面,我们看到如果不分配任何优先级,方法将按照测试名称的字母顺序执行。在这里,我们将保持依赖方法(betaMethod)的优先级低于依赖方法(alphaMethod)的优先级,如下面的程序所示。优先级较低的方法首先执行,如下面的程序所示。原创 2024-03-18 21:37:45 · 764 阅读 · 0 评论 -
如何在运行时或以编程方式生成testng.xml
所以,在这篇文章中,我们将学习如何在运行时创建一个testng.xml文件并执行它。现在,像标准java应用程序一样运行main()方法,Test.CodekruTest下的所有测试用例也将执行。要执行名为“codekru”的套件,我们必须创建一个TestNG对象,并向其传递一个套件列表,如下所示。我们在org.testng包中有suite,test,class标签的等价物。因此,记住这一点,让我们尝试创建与上面的XML文件等效的文件,它看起来像这样。原创 2024-04-04 16:23:26 · 735 阅读 · 0 评论 -
如何在TestNG中多次执行相同的测试方法
属性多次执行单个测试用例。然后,我们将使用invocationCount = 5。相反,测试用例是按顺序执行的,这意味着五个执行是一个接一个地运行的。下面是我们使用invocationCount和threadPoolSize属性的示例代码。让我们首先创建一个可以多次运行的测试方法。要多次并行运行单个测试用例,我们可以使用@Test annotation的一个附加属性。下面是我们的CodekruTest类,它将有一个测试方法,我们将运行五次。现在,在运行相同的XML文件之后,五个测试用例实例将并行运行。原创 2024-03-29 21:50:55 · 325 阅读 · 0 评论