Tôi gặp sự cố khi chạy thử nghiệm đơn vị thử nghiệm với pyDev. Tôi cố gắng chạy một bài kiểm tra đơn vị với một mô-đun chia sẻ mô-đun và một finalizer mà nên được excecuted sau khi thử nghiệm cuối cùng. Nhưng khi chạy thử nghiệm đơn vị trong pyDev, nó không sử dụng cùng một cá thể mà thay vào đó tạo ra hai cá thể khác nhau. Ví dụ đang chạy tốt trong bảng điều khiển hoặc khi bắt đầu từ tập lệnh trong pydev.PyDev chạy thử nghiệm đơn vị thử nghiệm với mô-đun được chia sẻ không thành công
Tôi đang sử dụng nền tảng Python 2.7.3, pytest-2.3.4, pyDev 2.7.3.2013031601, Eclipse 4.2 trên Win7.
tôi đã cố gắng dụ từ http://pytest.org/latest/fixture.html
Kết quả từ PyDev là:
============================= 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>
Giao diện điều khiển đầu ra là:
============================= 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>
Đó là hành vi mong đợi. Tôi đang làm gì sai ??
mã được sử dụng là conftest.py:
import pytest
import smtplib
@pytest.fixture(scope="module")
def smtp():
return smtplib.SMTP("merlinux.eu")
Các mã kiểm tra trong 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
Chạy thử nghiệm từ kịch bản với:
import pytest,os
os.chdir("[path_to_tests]/tests") #your file location
pytest.main(['-s', 'test_smtplib.py'])
gợi ý Bất kỳ và cảm ơn rất nhiều vì sự giúp đỡ của bạn!
Bạn đã định cấu hình IDE PyDev của mình để sử dụng trình kiểm tra ** py.test ** (* Window -> Preferences -> PyDev -> PyUnit -> Test Runner *)? –
Có, PyDev Test Runner được chọn. – MBaumann
Không, không phải là * PyDev Test Runner *, bạn cũng nên có khả năng chọn *** Py.test ** Test Runner * -> xem: http://up.picr.de/14054750vh.jpg –