2011-07-14 32 views
18

Burun test jeneratörlerini özel sınıfların içinde çalıştırmak mümkün müdür? Ben basit bir sınıf temelli sürümü içine example dönüştürmek çalışıyorum:Sınıf İçindeki Burun Test Jeneratörü

$ nosetests -v trial.py 
---------------------------------------------------------------------- 
Ran 0 tests in 0.000s 

sonuçları Ben değişmek bir göz vardı ve bu sürümde 0.9.0a1 beri çalışması gerektiğine inanıyoruz

file: trial.py 
>>>>>>>>>>>>>> 
class ATest(): 
    def test_evens(self): 
     for i in range(0, 5): 
      yield self.check_even, i, i * 3 

    def check_even(self, n, nn): 
     assert n % 2 == 0 or nn % 2 == 0 

O.

Neredeler?

cevap

33

alt sınıf zorunda inanıyoruz: nosetests jeneratör yöntemi keşfetmeye sahip olmak için unittest.TestCase gelen alt sınıf DEĞİL yapmak. (GitHub'dan son) nosetests 1.1.3 ile çalışan Kodu:

class TestA(object): def test_evens(self): for i in range(0, 5): yield self.check_even, i, i * 3 def check_even(self, n, nn): assert n % 2 == 0 or nn % 2 == 0 

Ayrıca TestA yerine ATest kullanın.

test.py:2: TestA.test_evens[0] PASSED 
test.py:2: TestA.test_evens[1] FAILED 
test.py:2: TestA.test_evens[2] PASSED 
test.py:2: TestA.test_evens[3] FAILED 
test.py:2: TestA.test_evens[4] PASSED 
+0

Bu berbat; Bunun için unittest'in assertRaisesRegexp'ini kullanabilmek güzel olurdu:/ –

+4

@ChrisR: 'nose.tools.assert_raises_regexp' kullanabilirsiniz –

+0

Bu yanıtı eklemek için, şimdi burnu bu davranışı belgeleyebilirsiniz. "Unityest.TestCase alt sınıflarında yöntem üreteçlerinin desteklenmediğini lütfen unutmayın." http://nose.readthedocs.org/en/latest/writing_tests.html –

-6

Ben çözüm daha az beklenen biridir Eğer unittest.TestCase

import unittest 

class ATest(unittest.TestCase): 
    def test_evens(self): 
     for i in range(0, 5): 
      yield self.check_even, i, i * 3 

    def check_even(self, n, nn): 
     assert n % 2 == 0 or nn % 2 == 0 
+0

Teşekkürler, bu işe yarıyor. – Longestline

+0

Bu benim için çalışmıyor, burun kullanarak 1.1.2 –

+0

burada da çalışmıyor. – user983716

İlgili konular