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..
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).
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
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.
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
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