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