我在使用 pyDev 运行 pytest 单元测试时遇到问题。我尝试使用模块共享夹具和终结器运行单元测试,该终结器应在最后一次测试后执行。但是在 pyDev 中运行单元测试时,它不会使用相同的实例,而是创建两个不同的实例。该示例在控制台中或从 pydev 中的脚本启动时运行良好。
我在 Win7 上使用平台 Python 2.7.3、pytest-2.3.4、pyDev 2.7.3.2013031601、Eclipse 4.2。
我尝试了http://pytest.org/latest/fixture.html中的示例
pydev 的输出是:
============================= 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>
控制台输出为:
============================= 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>
这是预期的行为。我究竟做错了什么??
使用的代码是conftest.py:
import pytest
import smtplib
@pytest.fixture(scope="module")
def smtp():
return smtplib.SMTP("merlinux.eu")
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
从脚本运行测试:
import pytest,os
os.chdir("[path_to_tests]/tests") #your file location
pytest.main(['-s', 'test_smtplib.py'])
任何建议,非常感谢您的帮助!