2013-04-08 6 views
13

विफल रहता है मुझे pydev के साथ pytest इकाई परीक्षण चलाने में समस्या है। मैं एक मॉड्यूल साझा स्थिरता और अंतिम परीक्षण के बाद एक यूनिट परीक्षण चलाने की कोशिश करता हूं जिसे अंतिम परीक्षण के बाद निकाला जाना चाहिए। लेकिन जब pyDev में यूनिट परीक्षण चलाते हैं तो यह एक ही उदाहरण का उपयोग नहीं करता है बल्कि इसके बजाय दो अलग-अलग उदाहरण बनाता है। उदाहरण कंसोल में ठीक चल रहा है या जब pydev के भीतर एक स्क्रिप्ट से शुरू किया गया है।मॉड्यूल-साझा स्थिरता के साथ पाइडेव रनिंग पायस्टेस्ट यूनिट परीक्षण

मैं मंच पायथन 2.7.3, पायस्ट-2.3.4, pyDev 2.7.3.2013031601, Win7 पर ग्रहण 4.2 का उपयोग कर रहा हूं।

मैं Pydev से http://pytest.org/latest/fixture.html

उत्पादन से उदाहरण की कोशिश की है:

============================= 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> 

कौन सा अपेक्षित व्यवहार है। मैं क्या गलत कर रहा हूं??

# 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']) 

कोई सुझाव

import pytest 
import smtplib 

@pytest.fixture(scope="module") 
def smtp(): 
return smtplib.SMTP("merlinux.eu") 

test_smtplib.py में परीक्षण कोड:

इस्तेमाल किया कोड conftest.py है और आपकी मदद के लिए बहुत बहुत धन्यवाद!

+0

क्या आपने ** py.test ** test runner (* विंडो -> प्राथमिकताएं -> PyDev -> PyUnit -> टेस्ट रनर *) का उपयोग करने के लिए अपने PyDev IDE को कॉन्फ़िगर किया था? –

+0

हां, पीईडीवी टेस्ट रनर का चयन किया गया है। – MBaumann

+0

नहीं, * पायडेव टेस्ट रनर * नहीं, आपके पास *** Py.test ** टेस्ट रनर * -> देखो: http://up.picr.de/14054750vh.jpg –

उत्तर

1

मेरे पास ग्रहण नहीं है लेकिन मैं पाइडेव और पायस्टेस्ट के लिए स्रोत कोड देख रहा हूं। pytest डिफ़ॉल्ट रूप से मल्टीप्रोसेसिंग का उपयोग नहीं करता है, लेकिन यदि आपके पास xdist इंस्टॉल है तो यह होगा। शायद आपके पास है? या शायद ग्रहण ने इसे स्थापित किया है?

यदि आपके पास अभी भी सिस्टम उपलब्ध है, तो क्या आप अपने pytest पैरामीटर में नीचे दिए गए विकल्प को सेट करने का प्रयास कर सकते हैं? Xdist as documented here का उपयोग करते समय यह केवल एक प्रक्रिया का उपयोग करने के लिए सबसे पुराना बताता है।

-n=1 या शायद यह -n 1

चुनाव करेगा, वह काम नहीं करता है, तो यह भी काम नहीं करना चाहिए लेकिन आप इसे करने की कोशिश कर सकता है? मॉड्यूल-स्तरीय परीक्षण को सक्षम करने के लिए pytest विकल्प (पीईडीईवी परीक्षण धावक विकल्पों में नहीं) में नीचे दिए गए विकल्प का उपयोग करें। यह एक pydev परीक्षण धावक विकल्प है, इसलिए मुझे लगता है कि यह एक त्रुटि का कारण बन जाएगा, लेकिन शायद कुछ अन्य कोड जो विकल्प से चाबियाँ इसका उपयोग करेंगे।

--split_jobs=module या फिर शायद --split_jobs module

1

लगता है जैसे इस Pydev ओर एक लंबे समय से खड़ी बग है। मैंने बस इसे ठीक किया और पाइडेव को पुल अनुरोध सबमिट किया, https://github.com/fabioz/Pydev/pull/120 देखें। इस बीच, आप शायद थोड़ा बदलाव कर सकते हैं और पाइडेव के अपने स्थापित संस्करण पर लागू हो सकते हैं, जिससे स्कोपिंग के साथ उचित pydev/pytest रन सक्षम हो सकते हैं।

+0

बस फिक्स लागू किया। यह जल्द ही रात के निर्माण में उपलब्ध होगा (और फिक्स के साथ अगली रिलीज PyDev 3.5.0 होगी) –

संबंधित मुद्दे