{"id":33076,"date":"2023-04-12T12:14:05","date_gmt":"2023-04-12T19:14:05","guid":{"rendered":"https:\/\/coderpad.io\/?p=33076"},"modified":"2024-02-16T11:52:35","modified_gmt":"2024-02-16T19:52:35","slug":"how-to-use-dataprovider-in-testng-with-examples","status":"publish","type":"post","link":"https:\/\/coderpad.io\/blog\/development\/how-to-use-dataprovider-in-testng-with-examples\/","title":{"rendered":"How To Use DataProvider In TestNG With Examples"},"content":{"rendered":"\n<p>Testing is an essential part of software development, especially in the agile world. By testing in the early stages of development, developers can ensure that their code is of high quality and meets customer expectations.&nbsp;<\/p>\n\n\n\n<p>In the agile world, it&#8217;s especially important to test early and often, as changes are made frequently and new features are added constantly. By testing regularly, developers can catch bugs early and prevent them from becoming major issues later on.&nbsp;<\/p>\n\n\n\n<p>There are many tools and techniques available for testing. In this post, we&#8217;ll discuss how to use DataProvider with <a href=\"https:\/\/testng.org\/\" target=\"_blank\" rel=\"noopener\">TestNG<\/a>.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Prerequisites<\/strong><\/h2>\n\n\n\n<p>Before we get started with the guide, it&#8217;s important that you fulfill all the prerequisites. This will ensure that you have all the necessary tools and knowledge to complete the guide successfully. You&#8217;ll need&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>an understanding of the <a href=\"https:\/\/docs.oracle.com\/en\/java\/\" target=\"_blank\" rel=\"noopener\">Java<\/a> programming language,<\/li>\n\n\n\n<li>Java IDE such as <a href=\"https:\/\/netbeans.apache.org\/\" target=\"_blank\" rel=\"noopener\">NetBeans<\/a> (or online IDE like Coderpad), and<\/li>\n\n\n\n<li>a basic understanding of testing frameworks like JUnit or NUnit.<\/li>\n<\/ul>\n\n\n\n<p>Once you&#8217;ve fulfilled all of the prerequisites, you&#8217;re ready to get started with the guide.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Is TestNG?<\/strong><\/h2>\n\n\n\n<p>TestNG is a testing framework for the Java programming language. The name &#8220;TestNG&#8221; is a play on the word &#8220;testing.&#8221; The initials &#8220;NG&#8221; stand for &#8220;next generation.&#8221;&nbsp;<\/p>\n\n\n\n<p>The goal of TestNG is to help developers perform a wider range of test cases\u2014<a href=\"https:\/\/coderpad.io\/blog\/development\/integration-tests-vs-unit-tests-integration-matters-more\/\">unit, functional, end-to-end, integration<\/a>, etc.\u2014with more ease and flexibility.&nbsp;<\/p>\n\n\n\n<p>TestNG is an open-source project hosted on GitHub and is released under the Apache software license. It was developed by C\u00e9dric Beust and was first released in July 2004.&nbsp;<\/p>\n\n\n\n<p>TestNG enables a user to create tests that are more maintainable and easier to understand. It also provides support for a variety of features, such as data-driven testing, parameterized testing, and multi-threaded testing.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Understanding TestNG With an Example<\/strong><\/h2>\n\n\n\n<p>Let\u2019s check out an example of how to use TestNG to write a test case using the following code snippet:&nbsp;<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java shcb-wrap-lines\"><span class=\"hljs-meta\">@Test<\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">TestLogin<\/span><span class=\"hljs-params\">()<\/span><\/span>{\n\n\u00a0\u00a0\u00a0\u00a0WebDriverManager.chromedriver().setup();\n\n\u00a0\u00a0\u00a0\u00a0WebDriver driver = <span class=\"hljs-keyword\">new<\/span> ChromeDriver();\n\n\u00a0\u00a0\u00a0\u00a0driver.manage().window().maximize();\n\n\u00a0\u00a0\u00a0\u00a0String username = <span class=\"hljs-string\">\"username\"<\/span>, password = <span class=\"hljs-string\">\"*****\"<\/span>;\n\n\u00a0\u00a0\u00a0\u00a0driver.get(<span class=\"hljs-string\">\"&lt;https:\/\/demosite.executeautomation.com\/&gt;\"<\/span>);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"UserName\"<\/span>)).sendKeys(username);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"Password\"<\/span>)).sendKeys(password);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"Login\"<\/span>)).submit();\n\n\u00a0\u00a0\u00a0\u00a0Assert.assertEquals(<span class=\"hljs-string\">\"User Form\"<\/span>, driver.findElement(By.tagName(<span class=\"hljs-string\">\"h2\"<\/span>)).getText());\n\n\u00a0\u00a0\u00a0\u00a0driver.quit();\n\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In the above code snippet, we\u2019re going to the URL&nbsp;<a href=\"https:\/\/demosite.executeautomation.com\/\" target=\"_blank\" rel=\"noopener\">https:\/\/demosite.executeautomation.com<\/a>, which has a login page that accepts any username and password.&nbsp;<\/p>\n\n\n\n<p>There, we&#8217;ll assert user form text from the next page after a successful login.&nbsp;<\/p>\n\n\n\n<p>The goal of the above code is to understand how to use the <code><strong>@<\/strong>Test<\/code> annotation from TestNG and write an automation test case using Selenium in Java.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>How to Perform Parameterization Using TestNG<\/strong><\/h3>\n\n\n\n<p>To perform parameterization, we use the <code>@Parameters({\"parameter1\", \"parameter2\", ..})<\/code> annotation.&nbsp;<\/p>\n\n\n\n<p>Test methods will read these parameters from XML files, as shown below:&nbsp;<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java shcb-wrap-lines\">&lt;?xml version=<span class=\"hljs-string\">\"1.0\"<\/span> encoding=<span class=\"hljs-string\">\"UTF-8\"<\/span>?&gt;\n\n&lt;suite name=<span class=\"hljs-string\">\"TestSuite\"<\/span>&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;parameter name=<span class=\"hljs-string\">\"username\"<\/span> value=<span class=\"hljs-string\">\"username\"<\/span> \/&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;parameter name=<span class=\"hljs-string\">\"password\"<\/span> value=<span class=\"hljs-string\">\"*****\"<\/span> \/&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;test name=<span class=\"hljs-string\">\"TestLogin\"<\/span>&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;classes&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;<span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">name<\/span><\/span>=<span class=\"hljs-string\">\"DataProvider.TestNg\"<\/span> \/&gt;\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/classes&gt;\n\n\u00a0\u00a0\u00a0\u00a0&lt;\/test&gt;\n\n&lt;\/suite&gt;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here, the parameter&#8217;s name from the XML file should match the name we mentioned in the annotation in the test method above.&nbsp;<\/p>\n\n\n\n<p>@Test<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java shcb-wrap-lines\"><span class=\"hljs-meta\">@Parameters<\/span>({<span class=\"hljs-string\">\"username\"<\/span>, <span class=\"hljs-string\">\"password\"<\/span>})\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">TestLogin<\/span><span class=\"hljs-params\">(String username, String password)<\/span><\/span>{\n\n\u00a0\u00a0\u00a0\u00a0WebDriverManager.chromedriver().setup();\n\n\u00a0\u00a0\u00a0\u00a0WebDriver driver = <span class=\"hljs-keyword\">new<\/span> ChromeDriver();\n\n\u00a0\u00a0\u00a0\u00a0driver.manage().window().maximize();\n\n\u00a0\u00a0\u00a0\u00a0driver.get(<span class=\"hljs-string\">\"&lt;https:\/\/demosite.executeautomation.com\/&gt;\"<\/span>);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"UserName\"<\/span>)).sendKeys(username);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"Password\"<\/span>)).sendKeys(password);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"Login\"<\/span>)).submit();\n\n\u00a0\u00a0\u00a0\u00a0Assert.assertEquals(<span class=\"hljs-string\">\"User Form\"<\/span>, driver.findElement(By.tagName(<span class=\"hljs-string\">\"h2\"<\/span>)).getText());\n\n\u00a0\u00a0\u00a0\u00a0driver.quit();\n\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The use of parameterization in TestNG gives you the power to perform data-driven testing more efficiently.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What Is DataProvider in Java?<\/strong><\/h3>\n\n\n\n<p>DataProvider is like a container that passes the data to our test methods so that our single test method can execute itself with multiple data sets.&nbsp;<\/p>\n\n\n\n<p>To make any method act as a DataProvider, we need to use this annotation\u2014 <code>@DataProvider<\/code> \u2014which will return a 2D array of an object where columns are the arguments needed in one test execution and rows are the number of data passed in each execution.&nbsp;<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java shcb-wrap-lines\"><span class=\"hljs-meta\">@Test<\/span>(dataProvider=<span class=\"hljs-string\">\"LoginDataProvider\"<\/span>)\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">TestLogin<\/span><span class=\"hljs-params\">(String username, String password)<\/span><\/span>{\n\n\u00a0\u00a0\u00a0\u00a0WebDriverManager.chromedriver().setup();\n\n\u00a0\u00a0\u00a0\u00a0WebDriver driver = <span class=\"hljs-keyword\">new<\/span> ChromeDriver();\n\n\u00a0\u00a0\u00a0\u00a0driver.manage().window().maximize();\n\n\u00a0\u00a0\u00a0\u00a0driver.get(<span class=\"hljs-string\">\"&lt;https:\/\/demosite.executeautomation.com\/&gt;\"<\/span>);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"UserName\"<\/span>)).sendKeys(username);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"Password\"<\/span>)).sendKeys(password);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"Login\"<\/span>)).submit();\n\n\u00a0\u00a0\u00a0\u00a0Assert.assertEquals(<span class=\"hljs-string\">\"User Form\"<\/span>, driver.findElement(By.tagName(<span class=\"hljs-string\">\"h2\"<\/span>)).getText());\n\n\u00a0\u00a0\u00a0\u00a0driver.quit();\n\n}\n\n<span class=\"hljs-meta\">@DataProvider<\/span>(name = <span class=\"hljs-string\">\"LoginDataProvider\"<\/span>)\n\n<span class=\"hljs-keyword\">public<\/span> Object&#91;]&#91;] LoginData(){\n\n<span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> Object&#91;]&#91;]\u00a0\n\n{\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{ <span class=\"hljs-string\">\"abc\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span> },\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{ <span class=\"hljs-string\">\"xyz\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span> },\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{ <span class=\"hljs-string\">\"mno\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span> }\n\n};\n\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Now, when we run the test above, the same test will run the method <code>TestLogin()<\/code> three times as LoginData returns three rows of data.&nbsp;<\/p>\n\n\n\n<p>If you don\u2019t specify any name while declaring the DataProvider method and simply use <code>@DataProvider<\/code> while calling it in the test, we need to use the method&#8217;s name as a data provider name. In the above case, it&#8217;ll be <code>@Test(dataProvider=\"LoginData\")<\/code>.&nbsp;<\/p>\n\n\n\n<p>Also, if DataProvider is created in a different class, then we need to include the dataProviderClass argument:&nbsp;<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java shcb-wrap-lines\"><span class=\"hljs-meta\">@Test<\/span>(dataProvider=<span class=\"hljs-string\">\"&lt;name&gt;\"<\/span>,dataProviderClass=&lt;dataProvider_ClassFileName&gt;<span class=\"hljs-class\">.<span class=\"hljs-keyword\">class<\/span>)<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Here are a few samples: <code>DataSets.java:<\/code><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java shcb-wrap-lines\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">DataSets<\/span><\/span>{\n\n<span class=\"hljs-meta\">@DataProvider<\/span>(name = <span class=\"hljs-string\">\"LoginDataProvider\"<\/span>)\n\n<span class=\"hljs-keyword\">public<\/span> Object&#91;]&#91;] LoginData(){\n\n\u00a0 \u00a0 <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> Object&#91;]&#91;] {\n\n\u00a0 \u00a0 \u00a0 \u00a0 { <span class=\"hljs-string\">\"abc\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span> },\n\n\u00a0 \u00a0 \u00a0 \u00a0 { <span class=\"hljs-string\">\"xyz\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span> },\n\n\u00a0 \u00a0 \u00a0 \u00a0 { <span class=\"hljs-string\">\"mno\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span> }\n\n\u00a0 \u00a0 };\n\n}\n\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>TestAuthorization.java<\/strong>&nbsp;<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java shcb-wrap-lines\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">TestAuthorization<\/span><\/span>{\n\n<span class=\"hljs-meta\">@Test<\/span>(dataProvider=<span class=\"hljs-string\">\"LoginDataProvider\"<\/span>, dataProviderClass=<span class=\"hljs-string\">\"DataSets.class\"<\/span>)\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">TestLogin<\/span><span class=\"hljs-params\">(String username, String password)<\/span><\/span>{\n\n    WebDriverManager.chromedriver().setup();\n\n    WebDriver driver = <span class=\"hljs-keyword\">new<\/span> ChromeDriver();\n\n    driver.manage().window().maximize();\n\n  \u00a0 driver.get(<span class=\"hljs-string\">\"&lt;https:\/\/demosite.executeautomation.com\/&gt;\"<\/span>);\n\n    driver.findElement(By.name(<span class=\"hljs-string\">\"UserName\"<\/span>)).sendKeys(username);\n\n    driver.findElement(By.name(<span class=\"hljs-string\">\"Password\"<\/span>)).sendKeys(password);\n\n    driver.findElement(By.name(<span class=\"hljs-string\">\"Login\"<\/span>)).submit();\n\n    Assert.assertEquals(<span class=\"hljs-string\">\"User Form\"<\/span>, driver.findElement(By.tagName(<span class=\"hljs-string\">\"h2\"<\/span>)).getText());\n\u00a0 \u00a0 driver.quit();\n    }\n\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\"><strong>Why Use DataProvider in TestNG?<\/strong><\/h3>\n\n\n\n<p>If we have to test the same test case for multiple data (username and password) without using DataProvider, it&#8217;ll look as shown below.&nbsp;<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java shcb-wrap-lines\"><span class=\"hljs-meta\">@Test<\/span>\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">TestLogin<\/span><span class=\"hljs-params\">()<\/span><\/span>{\n\n    WebDriverManager.chromedriver().setup();\n\n\u00a0\u00a0\u00a0\u00a0driver = <span class=\"hljs-keyword\">new<\/span> ChromeDriver();\n\n    driver.manage().window().maximize();\n\n    Login(<span class=\"hljs-string\">\"abc\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span>);\n\n    Login(<span class=\"hljs-string\">\"mno\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span>);\n\n    Login(<span class=\"hljs-string\">\"xyz\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span>);\n\n    Login(<span class=\"hljs-string\">\"def\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span>);\n\n    Login(<span class=\"hljs-string\">\"dod\"<\/span>, <span class=\"hljs-string\">\"***\"<\/span>);\n\n   driver.quit();\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Login<\/span><span class=\"hljs-params\">(String username, String password)<\/span><\/span>{\n\n\u00a0\u00a0\u00a0\u00a0driver.get(<span class=\"hljs-string\">\"&lt;https:\/\/demosite.executeautomation.com\/&gt;\"<\/span>);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"UserName\"<\/span>)).sendKeys(username);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"Password\"<\/span>)).sendKeys(password);\n\n\u00a0\u00a0\u00a0\u00a0driver.findElement(By.name(<span class=\"hljs-string\">\"Login\"<\/span>)).submit();\n\n\u00a0\u00a0\u00a0\u00a0Assert.assertEquals(<span class=\"hljs-string\">\"User Form\"<\/span>, driver.findElement(By.tagName(<span class=\"hljs-string\">\"h2\"<\/span>)).getText());\n\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Conclusion<\/strong><\/p>\n\n\n\n<p>We hope you enjoyed reading about DataProvider in testing with examples.&nbsp;<\/p>\n\n\n\n<p>TestNG is a testing framework that you can use with any Java project. It&#8217;s used in Agile methodology to test any application&#8217;s functionality.&nbsp;&nbsp;<\/p>\n\n\n\n<p>DataProvider is a feature of the TestNG library that allows a developer to run the same suite of test cases with different data sets. It helps the developer to<a href=\"https:\/\/coderpad.io\/features\/\"> test<\/a> the application with different values. You can use this to test the business logic of any application.&nbsp;<\/p>\n\n\n\n<p>We hope that you found this post informative and helpful.&nbsp;<\/p>\n\n\n\n<p><em>This post was written by Keshav Malik. <\/em><a href=\"https:\/\/theinfosecguy.xyz\/\" target=\"_blank\" rel=\"noopener\"><em>Keshav<\/em><\/a><em> is a full-time developer who loves to build and break stuff. He is constantly on the lookout for new and interesting technologies and enjoys working with a diverse set of technologies in his spare time. He +loves music and plays badminton whenever the opportunity presents itself.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When it comes to testing there are many tools and techniques available. In this post, we&#8217;ll discuss how to use DataProvider with TestNG.<\/p>\n","protected":false},"author":1,"featured_media":33088,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[9],"tags":[],"persona":[29],"blog-programming-language":[51],"keyword-cluster":[],"class_list":["post-33076","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development"],"acf":[],"_links":{"self":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/33076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/comments?post=33076"}],"version-history":[{"count":17,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/33076\/revisions"}],"predecessor-version":[{"id":38638,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/posts\/33076\/revisions\/38638"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media\/33088"}],"wp:attachment":[{"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/media?parent=33076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/categories?post=33076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/tags?post=33076"},{"taxonomy":"persona","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/persona?post=33076"},{"taxonomy":"blog-programming-language","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/blog-programming-language?post=33076"},{"taxonomy":"keyword-cluster","embeddable":true,"href":"https:\/\/coderpad.io\/wp-json\/wp\/v2\/keyword-cluster?post=33076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}