Ein schneller Vergleich der Testbibliotheken von Python und node.js.

Es ist 4 Tage her, seit ich angefangen habe, Javascript-Tests zu schreiben. Bei der Untersuchung verschiedener Test-Frameworks dreht sich alles um solche Dinge, aber ich werde es notieren, wenn es organisiert ist.

Es gibt viele Stellen, die unten fehlen, daher werde ich sie von Zeit zu Zeit aktualisieren..

Vergleich

Sprache Bibliotheksverwaltungstool Test-Framework Kommunikation um(API-Tests) Scheinbibliothek
Python pip, easy_install unittest, py.test requests mock
node.js npm mocha, chai supertest, superagent sinon

Das ist alles, was ich endlich berührt habe. Es scheint, dass es Testems, Phantomjs und viele andere Dinge gibt, aber ich habe noch nicht aufgeholt (Tränen).

Aufbau der Testumgebung

Erstellen Sie eine Umgebung, die nicht von außen abhängt.

Python

Python verwendet virtualenv und pip.

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

node.js

node.js ist npm! Ich habe einmal eine detaillierte Installationsmethode in blog geschrieben. Wenn es wird. Ich habe es übrigens in Coffeescript geschrieben.

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

Führen Sie den Testcode aus

Ein Beispiel für den Testcode wird im API-Erfassungstest und im Test unter Verwendung des folgenden Modells geschrieben. Es wird angenommen, dass sich der Testcode im Test befindet.

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 

Ab Version 1.7.0 von Coffee-Script scheint es übrigens so, als müssten Sie die Option beim Kompilieren in Coffee-Script / Register ändern.

Testen rund um die Kommunikation

Python

#API-Erfassungstest
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

#API-Erfassungstest
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

Testen mit einem Mock

Wenn Sie eine Funktion testen möchten, die eine Zufallszahl zurückgibt, schreiben Sie ein Beispiel, das einen Mock definiert und bestätigt, um eine Zufallsfunktion an eine Konstante zurückzugeben.

Python

#Zu testende Funktion
from random import random
def foo(x):
    return random() * x

#Prüfung
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

#Zu testende Funktion
foo = (x) ->
    return Math.random() * x

#Prüfung
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

Ich habe versucht, grob zu korrelieren. Ich werde die Tests von nun an über die GUI schreiben, also werde ich sie durch Tappen untersuchen. Ich möchte den RSpec-Test von Ruby vergleichen. Wenn ich Lust dazu habe, [blog](http: //pydiary.bitbucket. Kann in org /) schreiben.

Recommended Posts

Ein schneller Vergleich der Testbibliotheken von Python und node.js.
Erstellen und testen Sie eine CI-Umgebung für mehrere Versionen von Python
Verbinde viel Python oder und und
Gründlicher Vergleich von drei morphologischen Python-Analysebibliotheken
Einfacher Vergleich von Python-Bibliotheken, die Excel betreiben
R- und Python-Schreibvergleich (euklidische Methode der gegenseitigen Teilung)
[Python] Ein grobes Verständnis von Iterablen, Iteratoren und Generatoren
Berücksichtigung der Stärken und Schwächen von Python
Vergleich von Python und Ruby (Environment / Grammar / Literal Edition)
Liste der Python-Bibliotheken für Datenwissenschaftler und Dateningenieure
Vergleichstabelle häufig verwendeter Prozesse von Python und Clojure
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Python - Schneller Start der Protokollierung
Vergleich von 4 Arten von Python-Webframeworks
Python-Debug- und Testmodul
Python 3 Sortier- und Vergleichsfunktionen
Vergleich von Apex und Lamvery
Quellinstallation und Installation von Python
Erkennen Sie mit Python Objekte einer bestimmten Farbe und Größe
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Python: Erstellen Sie ein Wörterbuch aus einer Liste von Schlüsseln und Werten
Der Websocket von toio (nodejs) und python / websocket stellen keine Verbindung her.
Python a + = b und a = a + b sind unterschiedlich
Eine Aufzeichnung zum Patchen eines Python-Pakets
Umgebungskonstruktion von Python und OpenCV
Die Geschichte von Python und die Geschichte von NaN
Eine gute Beschreibung der Python-Dekorateure
Geschwindigkeitsvergleich der Volltextverarbeitung von Wiktionary mit F # und Python
Vergleich der grundlegenden Grammatik zwischen Java und Python
Installation von SciPy und matplotlib (Python)
[Python] Ein Memorandum der schönen Suppe4
Eine kurze Zusammenfassung der Python-Sammlung
Dies und das von Python-Eigenschaften
[Python] gibt A [oder / und] B zurück
Eine Kurzanleitung zu PyFlink, die Apache Flink und Python kombiniert
Geschwindigkeitsvergleich der Python-XML-Perspektive
Zusammenfassung der Unterschiede zwischen Python und PHP (Vergleichstabelle der Hauptelemente)
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Zusammenfassung der Python-Indizes und -Slices
Ein Python-Anfänger hat in den letzten 10 Jahren zunächst versucht, die Wetterdaten schnell und einfach zu analysieren.
[Python] Grundlegendes Muster und Verwendung der if-Anweisung (Vergleichsoperator und Boolescher Operator)
Reputation von Python-Büchern und Nachschlagewerken
Python-Code zum Trainieren und Testen mit Custom Vision of Cognitive Service
Code lesen von faker, einer Bibliothek, die Testdaten in Python generiert
Ein grobes Verständnis von Python-Feuer und ein Memo
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Zeigen Sie eine Liste der Alphabete in Python 3 an
Extraktion von tweet.js (json.loads und eval) (Python)
Erstellen Sie ein Beziehungsdiagramm von Python-Modulen
6 Python-Bibliotheken für schnellere Entwicklung und Debugging
Vergleich von Klassenvererbung und Konstruktorbeschreibung
[Python] Eine schnelle Webanwendung mit Bottle!
[Python] Ruft eine Liste der Instanzvariablen ab
[Python] [Meta] Ist der Python-Typ ein Typ?
Eine Geschichte über Python Pop und Append
Vergleich von Python Serverless Frameworks-Zappa mit Chalice
Vergleich von L1-Regularisierung und Leaky Relu
Einfache Einführung in die Python3-Serie und OpenCV3