2011-09-13 21 views
35

pytest के साथ, एक परीक्षणPytest: का चयन रद्द करने परीक्षण

@pytest.mark.slow 
def some_slow_test(): 
    pass 

फिर एक डेकोरेटर का उपयोग कर, कमांड लाइन से चिह्नित कर सकते हैं, एक pytest बता छोड़ परीक्षण चिह्नित "धीमी"

pytest -k-slow 

कर सकते हैं अगर मेरे पास एक अतिरिक्त टैग है:

@pytest.mark.long 
def some_long_test() 
    pass 

मैं लंबे और धीमे परीक्षण दोनों को छोड़ने में सक्षम होना चाहता हूं।

pytest -k-slow -k-long 

और इस:: मैं इस कोशिश की है

pytest -k-slow,long 

और न काम करने के लिए लगता है।

कमांड लाइन पर, मैं धीमे और लंबे परीक्षण दोनों को छोड़ने के लिए सबसे ज्यादा कैसे कहूं?

उत्तर

40

इसके अतिरिक्त (--collect-only विकल्प का उपयोग प्रयोग को गति), की हाल ही में इसके साथ "-एम" कमांड लाइन विकल्प आपको लिखने में सक्षम होना चाहिए:

py.test -m "not (slow or long)" 

आईओओ, "-एम" विकल्प एक अभिव्यक्ति स्वीकार करता है जो मार्करों को बूलियन मानों के रूप में उपयोग कर सकता है (यदि कोई मार्कर किसी परीक्षण फ़ंक्शन पर मौजूद नहीं है तो यह मान गलत है, यदि यह मौजूद है, तो यह सत्य है)।

10

pytest कोड (mark.py) और आगे प्रयोग के माध्यम से देख रहे हैं पता चलता निम्नलिखित काम करने के लिए लगता है:

pytest -k "-slow -long" 

+3

शायद एपीआई बदल गया है। मैंने 'pytest -k" -slow-long "की कोशिश की और वापस 'py.test: त्रुटि: argument -k: अपेक्षित एक तर्क' – DMfll

4

मार्क सजावट को ढेर करना भी संभव है।

@pytest.mark.slow 
@pytest.mark.main 
def test_myfunction(): 
    pass 

मैं तो py.test -m "slow and main" कहा जाता है और केवल दोनों सज्जाकार के साथ परीक्षण कहा जाता था।

py.test -m "not (slow and main)" परिणामस्वरूप अन्य परीक्षण

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