J'ai un problème lors de l'exécution des tests unitaires pytest avec pyDev. J'essaie d'effectuer un test unitaire avec un module partagé et un finaliseur qui devrait être exécuté après le dernier test. Mais lors de l'exécution du test unitaire dans pyDev, il n'utilise pas la même instance mais crée deux instances différentes. L'exemple fonctionne correctement dans la console ou lorsqu'il est démarré à partir d'un script dans pydev. J'utilise la plate-forme Python 2.7.3, pytest-2.3.4, pyDev 2.7.3.2013031601, Eclipse 4.2 sur Win7.PyDev exécutant un test d'unité pytest avec un équipement partagé par le module échoue
J'ai essayé l'exemple de http://pytest.org/latest/fixture.html
La sortie de pydev est:
============================= test session starts ==============================
platform win32 -- Python 2.7.3 -- pytest-2.3.4
__________________________________ test_ehlo ___________________________________
smtp = <smtplib.SMTP instance at 0x027F9080>
__________________________________ test_noop ___________________________________
smtp = <smtplib.SMTP instance at 0x027FF3C8>
La sortie de la console est:
============================= test session starts ==============================
platform win32 -- Python 2.7.3 -- pytest-2.3.4
__________________________________ test_ehlo ___________________________________
smtp = <smtplib.SMTP instance at 0x01E51288>
__________________________________ test_noop ___________________________________
smtp = <smtplib.SMTP instance at 0x01E51288>
Quel est le comportement attendu. Qu'est-ce que je fais mal??
le code utilisé est conftest.py:
import pytest
import smtplib
@pytest.fixture(scope="module")
def smtp():
return smtplib.SMTP("merlinux.eu")
Le code de test dans test_smtplib.py:
# content of test_module.py
def test_ehlo(smtp):
response = smtp.ehlo()
assert response[0] == 250
assert "merlinux" in response[1]
assert 0 # for demo purposes
def test_noop(smtp):
response = smtp.noop()
assert response[0] == 250
assert 0 # for demo purposes
Exécution du test de script avec:
import pytest,os
os.chdir("[path_to_tests]/tests") #your file location
pytest.main(['-s', 'test_smtplib.py'])
Toutes les suggestions et merci beaucoup pour votre aide!
Avez-vous configuré votre IDE PyDev pour utiliser le lanceur de test ** py.test ** (* Fenêtre -> Préférences -> PyDev -> PyUnit -> Test Runner *)? –
Oui, PyDev Test Runner est sélectionné. – MBaumann
Non, pas le * PyDev Test Runner *, vous devriez également avoir la possibilité de choisir le *** Py.test ** Test Runner * -> regardez: http://up.picr.de/14054750vh.jpg –