2 votes

Unittesting Corba en Python

Je suis intéressé par votre avis sur l'unittesting d'un code qui utilise Corba pour communiquer avec un serveur.

Pourriez-vous vous moquer des objets Corba ? En Python, c'est une sorte d'emmerdement car toutes les méthodes des objets Corba sont chargées dynamiquement. Vous êtes donc bloqué avec "simuler n'importe quoi".

Merci de votre attention !

Remarque : Je crois que je n'ai pas été assez clair, je vais donc essayer de donner un exemple un peu plus concret :

Une application web doit afficher une page contenant des données reçues du serveur. Elle obtient les données en appelant server_pagetable.getData(), puis formate les données, les convertit en types python corrects (parce que Corba n'a pas, par exemple, de type date, etc.) et enfin crée le code HTML à afficher.

Et c'est ce que j'aimerais tester - les méthodes qui reçoivent les données, effectuent toutes les transformations et créent finalement le code HTML.

Je pense que la décision la plus simple est de se moquer des objets Corba car ils comprennent essentiellement les fonctionnalités de réseau et de base de données (qui ne devraient pas être testées dans les tests unitaires).

C'est juste que c'est beaucoup de "travail supplémentaire" à faire - se moquer de tous les objets Corba (il y a un objet Utilisateur, un objet session serveur, l'objet pagetable, un objet admin, etc.) Peut-être est-ce simplement parce que je suis coincé avec Corba et que je dois donc refléter la hiérarchie des objets dictée par le serveur avec des mocks. D'un autre côté, il se peut qu'il y ait une solution élégante et cool pour tester le code en utilisant Corba qui ne m'a pas traversé l'esprit.

3voto

Aaron Digulla Points 143830

N'essayez pas de tester Corba. Supposez que Corba fonctionne. Unittest votre propre code. Cela signifie que :

  1. Créez un test unitaire qui vérifie que vous avez correctement configuré Corba et que vous pouvez invoquer une seule méthode et lire une propriété. Si cela fonctionne, toutes les autres méthodes et propriétés fonctionneront également.

  2. Testez ensuite que tous les objets exposés fonctionnent correctement. Vous n'avez pas besoin de Corba pour cela.

1voto

Michael Dillon Points 18741

Je mettrais en place un serveur de test, et je ferais des tests en direct sur ce serveur. L'unittesting peut s'avérer délicat avec le réseau, il est donc préférable de le garder aussi réel que possible. Par exemple, si vous avez besoin de communiquer avec trois serveurs différents, il pourrait être configuré avec trois adresses IP différentes pour jouer le rôle des trois serveurs.

0voto

Umar Points 111

J'ai un travail similaire à effectuer mais je ne vais probablement pas écrire un test pour l'implémentation d'objets CORBA ou plus spécifiquement d'objets COM (implémentation de CORBA). Je dois écrire des tests pour le travail qui utilise ces structures plutôt que pour les structures elles-mêmes (bien que je puisse me retrouver dans ce rôle si je pose trop de questions). En fin de compte, unittest est une intégration à plus petite échelle, donc lorsque j'écris des tests, je pense toujours à des entrées et des sorties plutôt qu'à des structures réelles. D'après la façon dont vous avez écrit votre problème, je me concentrerais sur les données de server_pagetable.getData() et le HTML de sortie sans trop me soucier de ce qui se passe entre les deux (parce que c'est le code que vous testez, vous ne voulez pas définir le code dans le test mais vous assurer que la sortie est correcte). Si vous voulez tester des fonctions individuelles entre les deux, j'obtiendrais des données fictives (essentiellement des données immobiles, de sorte que vous pouvez générer des données fictives plutôt qu'une classe fictive si possible). Les simulacres ne sont utilisés que lorsque vous ne disposez pas de certaines parties du code complet et que ces fonctions ont besoin d'une certaine contribution de ces parties du code, mais comme elles ne vous intéressent pas ou que vous ne les avez pas, vous simplifiez l'interaction avec elles. Ce n'est que mon avis.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X