कैसे pytest के तहत एकल फ़ाइल का परीक्षण करने के लिए


88

आप pytest में किसी एकल फ़ाइल का परीक्षण कैसे करते हैं? मैं केवल डॉक्स में अनदेखा विकल्प और "केवल इस फाइल का परीक्षण" विकल्प ही खोज सका।

अधिमानतः यह इसके बजाय कमांड लाइन पर काम करेगा setup.cfg, क्योंकि मैं विचारधारा में विभिन्न फ़ाइल परीक्षण चलाना चाहूंगा। पूरे सुइट में बहुत लंबा समय लगता है।

जवाबों:


94

बस pytestफ़ाइल के लिए पथ के साथ चलाएँ

कुछ इस तरह

pytest tests/unit/some_test_file.py


3
ठीक है, यह प्रतीत होता है कि पाइक्रोम क्या कर रहा है लेकिन यह अभी भी पूरे सूट को चला रहा है। कमांड लाइन पर py.test चलाना किसी कारण से segfaults दे रहा है। मुझे लगता है कि यह मूल प्रश्न के दायरे से बाहर है इसलिए मैं आपके उत्तर को स्वीकार करूंगा यदि मुझे यह काम करने के लिए मिल सके।
सिमोनजैक

3
addoptsपथ में जोड़े जाने पर स्पष्ट रूप से setup.cfg में समस्याएँ दे रहा है।
सिमोनजैक

1
@simonzack मुझे लगता है कि आप फ़ाइल में मौजूद कई टेस्ट केस में से एक सिंगल टेस्ट केस चलाना चाहते हैं। इसे आज़माएं: py.test test_basic.py -k test_first here test_first मेरे टेस्ट_बेसिक थिंक फ़ाइल में मौजूद एक परीक्षण मामला है।
अनुराग सिन्हा

73

यह बहुत आसान है:

$ pytest -v /path/to/test_file.py

-vझंडा शब्दाडंबर को बढ़ाने के लिए है। यदि आप उस फ़ाइल के भीतर एक विशिष्ट परीक्षण चलाना चाहते हैं:

$ pytest -v /path/to/test_file.py::test_name

यदि आप परीक्षण चलाना चाहते हैं, तो कौन-से नामों का उपयोग आप कर सकते हैं:

$ pytest -v -k "pattern_one or pattern_two" /path/to/test_file.py

आपके पास परीक्षणों को चिह्नित करने का विकल्प भी है, इसलिए आप -mचिह्नित परीक्षणों के सबसेट को चलाने के लिए ध्वज का उपयोग कर सकते हैं ।

test_file.py

def test_number_one():
    """Docstring"""
    assert 1 == 1


@pytest.mark.run_these_please
def test_number_two():
    """Docstring"""
    assert [1] == [1]

इसके साथ चिह्नित परीक्षण चलाने के लिए run_these_please:

$ pytest -v -m run_these_please /path/to/test_file.py

2
के लिए path/to/test.py::test_method, मुझे त्रुटि मिली> ERROR: नहीं मिला: /home/namgivu/NN/code/myproject/tests/models/test_bill.py::test_generate_for_noday_normal_cycle (कोई नाम नहीं) / घर / namgivu / NN / myproject परीक्षण /test_bill.py::test_generate_for_today_normal_cycle 'के किसी भी [<मॉड्यूल' परीक्षण / मॉडल / test_bill.py '>] में
नाम जी वीयू

1
आईडी के साथ पैरामीटर किए गए परीक्षणों के बारे में क्या? -k my_test[a test id here]काम नहीं करता है और मैंने अब तक -k "my_test and a and test and id and here"जो सबसे अच्छा प्रबंधन किया है , वह शायद ही एक अनुकूल प्रारूप है।
पॉल डी स्मिथ

1
इस उदाहरण में दिए गए उदाहरण (विशेष रूप से एक मिश्रण पथ और नोड चयन वाक्यविन्यास) को पाइस्टेस्ट प्रलेखन में जोड़ा जाना चाहिए, क्योंकि यह वास्तव में स्पष्ट नहीं है जैसा कि आईएमओ है।
cjauvin

12

यह मेरे लिए काम किया:

python -m pytest -k some_test_file.py

यह व्यक्तिगत परीक्षण कार्यों के लिए भी काम करता है:

python -m pytest -k test_about_something

यह pytest directory_to_tests/some_test_file.pyमेरे लिए काम नहीं करता है। मैं विंडोज़ अजगर 3.8.2 और पाइस्टेस्ट 6.0.1
मिंगहुआ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.