TestNG l'Exécution en parallèle avec DataProvider
J'ai un seul test qui reçoit des données de fournisseur de données. Je voudrais que ce test fonctionne en parallèle avec les différentes valeurs de fournisseur de données .
J'ai essayé une approche comme :
public class IndependentTest
{
@Test(dataProvider = "dp1" ,threadPoolSize=3,invocationCount=1)
public void testMethod(int number)
{
Long id = Thread.currentThread().getId();
System.out.println("HELLO : " + id);
}
@DataProvider(name = "dp1",parallel=true)
public Object[][] dp1() {
return new Object[][] {
new Object[] { 1 },
new Object[] { 2 },
new Object[] { 3 },
new Object[] { 4 },
new Object[] { 5 },
new Object[] { 6 },
new Object[] { 7 },
new Object[] { 8 }
};
}
}
La sortie, j'ai reçu est :
BONJOUR : 10
BONJOUR : 12
BONJOUR : 17
BONJOUR : 11
BONJOUR : 16
BONJOUR : 14
BONJOUR : 13
BONJOUR : 15
Donné naissance à 10 threads alors que j'ai spécifié 5 dans la taille du pool de threads .
Pourriez-vous nous dire ce qui doit être ajouté à l'extrait ci-dessus pour le contrôle du fournisseur de données, taille du pool de threads .
Vous aurez envie de faire des tests en parallèle, et non pas le fournisseur. Dans votre construction configurer le mode parallèle à
salut Ben , j'ai un seul test qui est censé fonctionner de plus de 10k fois basé sur le nombre de valeurs fournies par le fournisseur de données . Je voudrais contrôler le nombre de threads est généré lorsque parallèle=true est situé dans dataprovider. J'ai trouvé cet argument de ligne de commande -dataproviderthreadcount de contrôle dataprovider nombre de threads. Cependant, je voudrais savoir comment cela pourrait être fait à l'aide d'annotations
Dans mon projet, construction j'ai configurer les tests à exécuter en parallèle et, au total, exécuter 1,8 M en raison de fournisseurs de données sur 827 méthodes d'essai. Je ne pense pas que vous pouvez configurer ce par les annotations et au lieu de cela, sa configuration est passé dans la coulisse.
methods
et threadCount
à 5.salut Ben , j'ai un seul test qui est censé fonctionner de plus de 10k fois basé sur le nombre de valeurs fournies par le fournisseur de données . Je voudrais contrôler le nombre de threads est généré lorsque parallèle=true est situé dans dataprovider. J'ai trouvé cet argument de ligne de commande -dataproviderthreadcount de contrôle dataprovider nombre de threads. Cependant, je voudrais savoir comment cela pourrait être fait à l'aide d'annotations
Dans mon projet, construction j'ai configurer les tests à exécuter en parallèle et, au total, exécuter 1,8 M en raison de fournisseurs de données sur 827 méthodes d'essai. Je ne pense pas que vous pouvez configurer ce par les annotations et au lieu de cela, sa configuration est passé dans la coulisse.
OriginalL'auteur sujith | 2015-07-20
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
dataproviderthreadcount
. Lethreadpoolsize
etinvocationcount
valeurs ne sont pas nécessaires. Voir les détails ici.Nope. Aucun moyen de l'annotation.
merci de compensation qu'il n'y est pas pour cela au niveau annotation. Est-ce à dire que tous les tests qui utilisent un dataprovider allons utiliser le nombre de tests spécifiés à l'aide de dataproviderthreadcount ? Serait-il possible de contrôler le nombre de threads en fonction du test plutôt que de les laisser tous les tests d'utiliser plusieurs threads?
Autant que je sache, c'est au niveau d'exécution et ne peut pas être contrôlé au niveau du test - si je suis la compréhension de votre question correctement
Ok . C'était exactement l'info que je cherchais.
OriginalL'auteur niharika_neo
Dans testng.xml vous pouvez définir le nombre de threads pour le dataprovider via
data-provider-thread-count="3"
OriginalL'auteur Igor Gladun
Essayer de définir le pool de threads manière suivante:
OriginalL'auteur sanitar4eg
Actuellement, un seul thread est de s'habituer comme vous avez défini
invocationCount
1, si vous le remplacez par 3 puis trois travailleurs fil sera utilisé.invocationCount
:- Le nombre de fois que cette méthode doit être appelée.threadPoolSize
:- La taille du pool de threads pour cette méthode. La méthode sera invoquée à partir de plusieurs threads comme spécifié par invocationCount.Remarque: cet attribut est ignoré si invocationCount n'est pas spécifié.
Aussi,
Vous pouvez également spécifier qu'un
@Test
méthode doit être appelée à partir de différents threads. Vous pouvez utiliser l'attributthreadPoolSize
pour parvenir à ce résultat:Dans cet exemple, la fonction testServer sera appelé une dizaine de fois à partir de trois différents threads. En outre, un délai de dix secondes garantit qu'aucun des fils se bloquer sur ce thread pour toujours.
Plus d'informations peuvent être trouvées ici
Fournisseur de données ne va pas aider dans l'exécution parallèle.. c'est une façon de décrire votre entrée appelez-vous er tester 1 par 1 utilisation de ces intrants - à mon humble avis
Salut , dataproviderthreadcount peut être utilisé pour simuler l'exécution en parallèle de la seule méthode de test avec les instances de données qui viennent de dataprovider. Fournisseur de données du pool de threads est différent du test pool de threads dans testng. Cependant dataproviderthreadcount est spécifié comme une ligne de cmd argument . Je voudrais savoir si il est possible de spécifier ce au niveau annotation.
OriginalL'auteur TheCodingFrog