अजगर जेठ के मामलों को अंजाम देने के लिए आपको जेनकिंस कैसे मिले? क्या यह संभव है कि JUnit स्टाइल XML आउटपुट बिलिन unittest
पैकेज से?
अजगर जेठ के मामलों को अंजाम देने के लिए आपको जेनकिंस कैसे मिले? क्या यह संभव है कि JUnit स्टाइल XML आउटपुट बिलिन unittest
पैकेज से?
जवाबों:
tests.py:
# tests.py
import random
try:
import unittest2 as unittest
except ImportError:
import unittest
class SimpleTest(unittest.TestCase):
@unittest.skip("demonstrating skipping")
def test_skipped(self):
self.fail("shouldn't happen")
def test_pass(self):
self.assertEqual(10, 7 + 3)
def test_fail(self):
self.assertEqual(11, 7 + 3)
इसके साथ परीक्षण चलाएं:
py.test --junitxml results.xml tests.py
results.xml:
<?xml version="1.0" encoding="utf-8"?>
<testsuite errors="0" failures="1" name="pytest" skips="1" tests="2" time="0.097">
<testcase classname="tests.SimpleTest" name="test_fail" time="0.000301837921143">
<failure message="test failure">self = <tests.SimpleTest testMethod=test_fail>
def test_fail(self):
> self.assertEqual(11, 7 + 3)
E AssertionError: 11 != 10
tests.py:16: AssertionError</failure>
</testcase>
<testcase classname="tests.SimpleTest" name="test_pass" time="0.000109910964966"/>
<testcase classname="tests.SimpleTest" name="test_skipped" time="0.000164031982422">
<skipped message="demonstrating skipping" type="pytest.skip">/home/damien/test-env/lib/python2.6/site-packages/_pytest/unittest.py:119: Skipped: demonstrating skipping</skipped>
</testcase>
</testsuite>
इसके साथ परीक्षण चलाएं:
nosetests --with-xunit
nosetests.xml:
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="nosetests" tests="3" errors="0" failures="1" skip="1">
<testcase classname="tests.SimpleTest" name="test_fail" time="0.000">
<failure type="exceptions.AssertionError" message="11 != 10">
<![CDATA[Traceback (most recent call last):
File "/opt/python-2.6.1/lib/python2.6/site-packages/unittest2-0.5.1-py2.6.egg/unittest2/case.py", line 340, in run
testMethod()
File "/home/damien/tests.py", line 16, in test_fail
self.assertEqual(11, 7 + 3)
File "/opt/python-2.6.1/lib/python2.6/site-packages/unittest2-0.5.1-py2.6.egg/unittest2/case.py", line 521, in assertEqual
assertion_func(first, second, msg=msg)
File "/opt/python-2.6.1/lib/python2.6/site-packages/unittest2-0.5.1-py2.6.egg/unittest2/case.py", line 514, in _baseAssertEqual
raise self.failureException(msg)
AssertionError: 11 != 10
]]>
</failure>
</testcase>
<testcase classname="tests.SimpleTest" name="test_pass" time="0.000"></testcase>
<testcase classname="tests.SimpleTest" name="test_skipped" time="0.000">
<skipped type="nose.plugins.skip.SkipTest" message="demonstrating skipping">
<![CDATA[SkipTest: demonstrating skipping
]]>
</skipped>
</testcase>
</testsuite>
आपको nose2.plugins.junitxml
प्लगइन का उपयोग करने की आवश्यकता होगी । आप nose2
एक कॉन्फ़िगर फ़ाइल के साथ कॉन्फ़िगर कर सकते हैं जैसे आप सामान्य रूप से करेंगे, या --plugin
कमांड-लाइन विकल्प के साथ।
इसके साथ परीक्षण चलाएं:
nose2 --plugin nose2.plugins.junitxml --junit-xml tests
nose2-junit.xml:
<testsuite errors="0" failures="1" name="nose2-junit" skips="1" tests="3" time="0.001">
<testcase classname="tests.SimpleTest" name="test_fail" time="0.000126">
<failure message="test failure">Traceback (most recent call last):
File "/Users/damien/Work/test2/tests.py", line 18, in test_fail
self.assertEqual(11, 7 + 3)
AssertionError: 11 != 10
</failure>
</testcase>
<testcase classname="tests.SimpleTest" name="test_pass" time="0.000095" />
<testcase classname="tests.SimpleTest" name="test_skipped" time="0.000058">
<skipped />
</testcase>
</testsuite>
निम्नलिखित को संलग्न करें tests.py
if __name__ == '__main__':
import xmlrunner
unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))
इसके साथ परीक्षण चलाएं:
python tests.py
परीक्षण रिपोर्ट / टेस्ट-SimpleTest-20131001140629.xml:
<?xml version="1.0" ?>
<testsuite errors="1" failures="0" name="SimpleTest-20131001140629" tests="3" time="0.000">
<testcase classname="SimpleTest" name="test_pass" time="0.000"/>
<testcase classname="SimpleTest" name="test_fail" time="0.000">
<error message="11 != 10" type="AssertionError">
<![CDATA[Traceback (most recent call last):
File "tests.py", line 16, in test_fail
self.assertEqual(11, 7 + 3)
AssertionError: 11 != 10
]]> </error>
</testcase>
<testcase classname="SimpleTest" name="test_skipped" time="0.000">
<skipped message="demonstrating skipping" type="skip"/>
</testcase>
<system-out>
<![CDATA[]]> </system-out>
<system-err>
<![CDATA[]]> </system-err>
</testsuite>
unittest.main(module=None, testRunner=xmlrunner.XMLTestRunner(output='test-reports'))
।
module=None
टेस्ट डिस्कवरी का उपयोग करने की आवश्यकता क्यों है ? यह ठीक उसी तरह काम करता है जैसा उत्तर में बताया गया है unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))
।
मैं नाक का इस्तेमाल करके दूसरा होता। बेसिक XML रिपोर्टिंग अब में बनाया गया है। बस --with-xunit कमांड लाइन विकल्प का उपयोग करें और यह एक nosetests.xml फ़ाइल का उत्पादन करेगा। उदाहरण के लिए:
nosetests - साथ-xunit
फिर एक "प्रकाशित JUnit परीक्षा परिणाम रिपोर्ट" पोस्ट बिल्ड एक्शन जोड़ें, और nosetests.xml के साथ "टेस्ट रिपोर्ट एक्सएमएल" फ़ील्ड भरें (यह मानते हुए कि आप $ कार्यों में नोसेटेस्ट भाग गए)।
आप एक परीक्षण धावक को जोड़ने के लिए unittest-xml- रिपोर्टिंग पैकेज स्थापित कर सकते हैं जो XML को अंतर्निहित बनाता है unittest
।
हम pytest का उपयोग करते हैं , जिसमें XML आउटपुट है (यह एक कमांड लाइन विकल्प है)।
किसी भी तरह से, यूनिट परीक्षणों को निष्पादित करके शेल कमांड चलाकर किया जा सकता है।
मैंने नोसेटेस्ट का इस्तेमाल किया। जेनकींस के लिए एक्सएमएल आउटपुट के लिए एडऑन हैं
बिल्डआउट का उपयोग करते समय हम collective.xmltestreport
JUnit-style XML आउटपुट का उपयोग करते हैं, शायद यह स्रोत कोड या मॉड्यूल ही मदद का हो सकता है।
python -m pytest --junit-xml=pytest_unit.xml source_directory/test/unit || true # tests may fail
इसे जेनकिंस से शेल के रूप में चलाएं, आप रिपोर्ट को pytest_unit.xml में विरूपण साक्ष्य के रूप में प्राप्त कर सकते हैं।
import nose ; nose.runmodule() # aka nose.run(defaultTest=__name__)