के साथ एक टेस्ट सूट (परीक्षणों का मनमानी संग्रह) चला रहा है, मैं कार्यात्मक परीक्षण ढांचे को बनाने के लिए py.test का उपयोग कर रहा हूं, इसलिए मुझे चलाने के लिए सटीक परीक्षण निर्दिष्ट करने में सक्षम होना चाहिए। मैं गतिशील परीक्षण संग्रह की सुंदरता को समझता हूं, लेकिन मैं अपने परीक्षण पर्यावरण स्वास्थ्य जांच को पहले चलाने में सक्षम होना चाहता हूं, फिर मेरे प्रतिगमन परीक्षण चलाएं; यह वर्गीकरण अन्य उद्देश्यों के लिए उपयोग किए जा रहे इन सेटों में परीक्षणों को रोकता नहीं है।py.test
परीक्षण सूट जेनकिंस बिल्ड परियोजनाओं से बंधे होंगे। मैं ओएसएक्स, पायथन 2.7.3, py.test 2.3.4 का उपयोग कर रहा हूँ।
तो मैं निम्नलिखित की तरह एक परीक्षण का मामला है:
# sample_unittest.py
import unittest, pytest
class TestClass(unittest.TestCase):
def setUp(self):
self.testdata = ['apple', 'pear', 'berry']
def test_first(self):
assert 'apple' in self.testdata
def test_second(self):
assert 'pear' in self.testdata
def tearDown(self):
self.testdata = []
def suite():
suite = unittest.TestSuite()
suite.addTest(TestClass('test_first'))
return suite
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())
और मैं इस तरह टेस्ट स्वीट है: यदि मैं सूट के खिलाफ कमांड लाइन से निम्नलिखित चलाने
# suite_regression.py
import unittest, pytest
import functionaltests.sample_unittest as sample_unittest
# set up the imported tests
suite_sample_unittest = sample_unittest.suite()
# create this test suite
suite = unittest.TestSuite()
suite.addTest(suite_sample_unittest)
# run the suite
unittest.TextTestRunner(verbosity=2).run(suite)
, test_first चलता है (लेकिन मुझे अतिरिक्त जानकारी नहीं मिलती है जो py.test प्रदान करेगा):
पायथन फ़ंक्शनटास्ट/suite_regressi on.py -v
अगर मैं सूट के खिलाफ निम्नलिखित चलाने के लिए, 0 परीक्षण एकत्र कर रहे हैं:
py.test functionaltests/suite_regression.py
निम्नलिखित अगर मैं चलाने testcase, test_first के खिलाफ और चलाने test_second:
py.test functionaltests/sample_unittest.py -v
मुझे नहीं लगता कि कीवर्ड के साथ py.test कैसे करों को सूट में व्यवस्थित करने में मदद करेगा। टेस्टकेस को फ़ोल्डर संरचना में रखना और फ़ोल्डर विकल्पों के साथ py.test चलाना मुझे कार्यात्मक क्षेत्र द्वारा परीक्षण व्यवस्थित करने नहीं देगा।
तो मेरे सवालों का:
- वहाँ एक फिर से प्रयोग करने योग्य प्रारूप में परीक्षण की मनमानी समूहों निर्दिष्ट करने के लिए एक py.test तंत्र है?
- क्या py.test से unittest.TestSuite का उपयोग करने का कोई तरीका है?
संपादित करें: तो मैं py.test मार्करों बाहर की कोशिश की, मुझे की सुविधा देता है जो एक मनमाना लेबल के साथ झंडा परीक्षण कार्य करता है और परीक्षण तरीकों, और फिर रन टाइम पर उस लेबल के लिए फ़िल्टर करें।
# conftest.py
import pytest
# set up custom markers
regression = pytest.mark.NAME
health = pytest.mark.NAME
और मेरे अद्यतन परीक्षण का मामला:
# sample_unittest.py
import unittest, pytest
class TestClass(unittest.TestCase):
def setUp(self):
self.testdata = ['apple', 'pear', 'berry']
@pytest.mark.healthcheck
@pytest.mark.regression
def test_first(self):
assert 'apple' in self.testdata
@pytest.mark.regression
def test_second(self):
assert 'pear' in self.testdata
def tearDown(self):
self.testdata = []
def suite():
suite = unittest.TestSuite()
suite.addTest(TestClass('test_first'))
return suite
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())
तो निम्न आदेश एकत्र करता है और चल रहा है test_first चलाता है:
py.test functionaltests/sample_unittest।py -v -m healthcheck
और यह एकत्र करता है और test_first चलाता है और test_second: तो वापस करने के लिए
py.test functionaltests/sample_unittest.py -v -m प्रतिगमन
मेरी प्रश्न: मार्कर आंशिक समाधान है, लेकिन मेरे पास अभी भी एकत्रित चिह्नित परीक्षणों के निष्पादन को नियंत्रित करने का कोई तरीका नहीं है।
जब आप कहते हैं * "एकत्रित चिह्नित परीक्षणों के निष्पादन को नियंत्रित करने का कोई तरीका नहीं है" * आपका क्या मतलब है? आदेश? –
हां, मैं निष्पक्षता के अनुसार निष्पादन को नियंत्रित करना चाहता हूं, और एकत्रित परीक्षणों के किसी भी डिफ़ॉल्ट क्रम पर भरोसा नहीं करता हूं। – sophe