2017-02-21 1 views
2

Der Test etwa wie folgt aussieht:Pytest berichtet Test übersprungen mit unittest.skip bestanden als

import unittest 

class FooTestCase(unittest.TestCase): 

    @unittest.skip 
    def test_bar(self): 
     self.assertIsNone('not none') 

Wenn pytest laufen mit dem Bericht sieht etwa so aus:

path/to/my/tests/test.py::FooTestCase::test_bar <- ../../../../../usr/lib/python3.5/unittest/case.py PASSED 

Auf der anderen Seite, wenn ich @unittest.skip mit @pytest.mark.skip ersetzen, wird es ordnungsgemäß gemeldet als übersprungen:

path/to/my/tests/test.py::FooTestCase::test_bar <- ../../../../../usr/lib/python3.5/unittest/case.py SKIPPED 

Wenn jemand sagen könnte, mache ich etwas falsch oder ist das ein Fehler in pytest?

+2

Sieht aus wie Sie anrufen müssen 'unittest.skip'. Versuchen Sie '@ unittest.skip ()'. – vaultah

Antwort

2

unittest.skip() Dekorateur erfordert ein Argument:

@unittest.skip(reason)

Unconditionally den ergänzten Test überspringen. Grund sollte beschreiben, warum der Test übersprungen wird.

Seine Verwendung in gefunden wird ihre examples:

class MyTestCase(unittest.TestCase): 

    @unittest.skip("demonstrating skipping") 
    def test_nothing(self): 
     self.fail("shouldn't happen") 

So unittest.skip ist kein Dekorateur von selbst, sondern ein Dekorateur Fabrik - die eigentliche Dekorateur wird als Ergebnis erhalten unittest.skip des Aufrufs . Diese

erklärt, warum Ihr Test bestanden wird anstelle von übersprungenen sein oder andernfalls, da es tatsächlich entspricht der folgenden ist:

import unittest 

class FooTestCase(unittest.TestCase): 

    def test_bar(self): 
     self.assertIsNone('not none') 

    test_bar = unittest.skip(test_bar) 
    # now test_bar becomes a decorator but is instead invoked by 
    # pytest as if it were a unittest method and passes 
Verwandte Themen