Une comparaison rapide des bibliothèques de test Python et node.js

Cela fait 4 jours que j'ai commencé à écrire des tests javascript. Lors de l'étude de divers frameworks de test, tout est question de choses comme ce qui se passe maintenant, mais je vais en prendre note une fois organisé.

Il manque de nombreux endroits ci-dessous, je vais donc le mettre à jour de temps en temps..

Comparaison

Langue Outil de gestion de bibliothèque Cadre de test Communication autour(Test API) Bibliothèque fictive
Python pip, easy_install unittest, py.test requests mock
node.js npm mocha, chai supertest, superagent sinon

C'est tout ce que j'ai finalement touché.Il semble qu'il y ait des testems, des phantomjs et bien d'autres choses, mais je n'ai pas encore rattrapé (larmes).

Construction d'environnement de test

Créez un environnement qui ne dépend pas de l'extérieur.

Python

Python utilise virtualenv et pip.

mkdir PROJECT
cd PROJECT
virtualenv -p python2.7 venv
source venv/bin/activate
pip install py.test requests mock

node.js

node.js est npm! J'ai déjà écrit une méthode d'installation détaillée dans blog. Pour référence. Si cela devient. Au fait, je l'ai écrit en coffeescript.

mkdir PROJECT
cd PROJECT
npm init
npm install coffee-script mocha chai supertest superagent sinon --save-dev

Exécutez le code de test

Un exemple de code de test sera écrit dans le test d'acquisition d'API et le test en utilisant la maquette ci-dessous. Le code de test est supposé être en cours de test /.

Python

source venv/bin/activate
py.test tests/*.py -v -k

node.js

./node_modules/mocha/bin/mocha test/*.coffee --compilers coffee:coffee-script/register -R list 

Au fait, à partir de la version 1.7.0 de coffee-script, il semble que vous deviez changer l'option lors de la compilation en coffee-script / register.

Test autour de la communication

Python

#Test d'acquisition d'API
import unittest
import requests

class TestAPI(unittest.TestCase):
    
    def get_api(self):
        res = requests.get(
            '/api/status',
            headers={'Content-Type': 'application/json'},
            data='{"name":"hoge"}'
        )
        return res
        
    def test_sample(self):
        res = self.get_api()
        self.assertEqual(res.status_code, 200)
        self.assertIsInstance(res.json()['age'], int)
        self.assertEqual(res.json()['age'], 25)

node.js

#Test d'acquisition d'API
assert = require('assert')
request = require('superagent')

describe 'test: ', ->
  it 'testing for API', (done) ->
    request.get('/api/status')
      .set('Content-Type', 'application/json')
      .end (error, res) ->
        if error
          return done(err)
        assert.equal(res.status, 200)
        assert.typeOf(res.body['age'], 'number')
        assert.equal(res.body['age'], 25)
        done()
        return

Tester avec un simulacre

Si vous souhaitez tester une fonction qui renvoie un nombre aléatoire, écrivez un exemple qui définit et affirme une simulation pour renvoyer une fonction aléatoire à une constante.

Python

#Fonction à tester
from random import random
def foo(x):
    return random() * x

#tester
import unittest
from mock import Mock

class TestMock(unittest.TestCase):

    def test_sample(self):
        random = Mock()
        random.return_value = 0.5
        self.assertEqual(foo(10), 5) 

node.js

#Fonction à tester
foo = (x) ->
    return Math.random() * x

#tester
assert = require('assert')
sinon = require('sinon')

describe 'test: ', ->
  it 'testing for foo()', (done) ->
    stub = sinon.stub(Math, 'random')
    stub.returns(0.5)
    assert.equal(foo(10), 5)
    done()
    return

J'ai essayé de corréler grossièrement. J'écrirai les tests autour de l'interface graphique à partir de maintenant, donc je vais l'explorer en tâtonnant. Je voudrais comparer le test RSpec de ruby. Quand j'en ai envie, [blog](http: //pydiary.bitbucket. Peut écrire dans org /).

Recommended Posts

Une comparaison rapide des bibliothèques de test Python et node.js
Créer et tester un environnement CI pour plusieurs versions de Python
Connectez beaucoup de Python ou et et
Comparaison approfondie de trois bibliothèques d'analyse morphologique Python
Comparaison simple des bibliothèques Python qui exploitent Excel
Comparaison d'écriture R et Python (méthode de division mutuelle euclidienne)
[Python] Une compréhension approximative des itérables, des itérateurs et des générateurs
Prise en compte des forces et faiblesses de Python
Comparaison de Python et Ruby (Environment / Grammar / Literal Edition)
Liste des bibliothèques Python pour les data scientists et les data ingénieurs
Tableau de comparaison des processus fréquemment utilisés de Python et Clojure
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Python - Démarrage rapide de la journalisation
Comparaison de 4 types de frameworks Web Python
Module de débogage et de test Python
Fonctions de tri et de comparaison Python 3
Comparaison d'Apex et de Lamvery
Installation source et installation de Python
Détecter les objets d'une couleur et d'une taille spécifiques avec Python
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Python: créer un dictionnaire à partir d'une liste de clés et de valeurs
Le websocket de toio (nodejs) et python / websocket ne se connecte pas.
Python a + = b et a = a + b sont différents
Un enregistrement de patcher un package python
Construction d'environnement de python et opencv
L'histoire de Python et l'histoire de NaN
Une bonne description des décorateurs Python
Comparaison de vitesse du traitement de texte intégral de Wiktionary avec F # et Python
Comparaison de la grammaire de base entre Java et Python
Installer SciPy et matplotlib (Python)
[Python] Un mémorandum de belle soupe4
Un bref résumé de la collection Python
Ceci et cela des propriétés python
[Python] renvoie A [ou / et] B
Un guide rapide de PyFlink qui combine Apache Flink et Python
Comparaison de la vitesse de la perspective XML Python
Résumé des différences entre Python et PHP (tableau de comparaison des principaux éléments)
Coexistence de Python2 et 3 avec CircleCI (1.0)
Résumé des index et des tranches Python
Un débutant en Python a d'abord essayé une analyse rapide et facile des données météorologiques des 10 dernières années.
[Python] Modèle de base et utilisation de l'instruction if (opérateur de comparaison et opérateur booléen)
Réputation des livres Python et des livres de référence
Code Python pour former et tester avec Custom Vision of Cognitive Service
Lecture de code de faker, une bibliothèque qui génère des données de test en Python
Une compréhension approximative de python-fire et un mémo
Ecrire le test dans la docstring python
Afficher une liste d'alphabets en Python 3
Extraction de tweet.js (json.loads et eval) (Python)
Créer un diagramme de relations des modules Python
6 bibliothèques Python pour un développement et un débogage plus rapides
Comparaison de l'héritage de classe et de la description du constructeur
[Python] Une application web rapide avec Bottle!
[python] Obtenir une liste de variables d'instance
[python] [meta] Le type de python est-il un type?
Une histoire sur Python pop and append
Comparaison des frameworks sans serveur Python-Zappa vs Chalice
Comparaison de la régularisation L1 et Leaky Relu
Introduction facile de la série python3 et d'OpenCV3