Search code examples
multithreadingtestngdataprovider

How does thread parallelism work for DataProvider in TestNg and how can I specify the threadcount for DataProvider?


We use threadcount attribute in @Test annotation of TestNg but there is no such attribute for @DataProvider annotation so is it possible to specify the thread count for Dataprovider, if yes then how? I specified Parallel=true in @DataProvider annotation and tried to read the data from Excel, there were 19 sets of test data and when executed then by default I found that 10 threads got created. I used Thread.currentThread() along with each set of Test Data to display the thread being used but I failed to understand the process and reason for 10 threads getting created.Output


Solution

  • That is because 10 is used as the default value by testng when parallel is set to true on a DataProvider. This can be overridden by data-provider-thread-count attribute on the suite tag. Example:

    <suite name="Sample Suite" data-provider-thread-count="20">
      <test name="Component Tests">
        <packages>
            <package name="com.something.tests" />
        </packages>
     </test>
    </suite>
    

    The testng documentation on DataProvider has this and much more: http://testng.org/doc/documentation-main.html#parameters-dataproviders