2017-05-13 17 views
11

Vì vậy, tôi muốn làm mã này Kata để thực hành. Tôi muốn thực hiện kata với tdd trong các tập tin riêng biệt:Python unittest - Ran 0 kiểm tra trong 0,000s

Thuật toán:

# stringcalculator.py 
def Add(string): 
    return 1 

và các bài kiểm tra:

# stringcalculator.spec.py 
from stringcalculator import Add 
import unittest 

class TestStringCalculator(unittest.TestCase): 
    def add_returns_zero_for_emptyString(self): 
     self.assertEqual(Add(' '), 0) 

if __name__ == '__main__': 
    unittest.main() 

Khi chạy testfile, tôi nhận được:

Ran 0 tests in 0.000s 

OK 

Tuy nhiên, nó sẽ trả về một thử nghiệm không thành công. Tôi nhớ gì ở đây?

+4

Khá chắc chắn bạn cần 'thử nghiệm' ở đâu đó trong tên phương thức. –

+1

Các phương thức 'TestCase' sẽ được chạy phải bắt đầu bằng' 'test''! – schwobaseggl

+0

Có! Lạ thật, không biết về hạn chế này. Cảm ơn các bạn. – MattSom

Trả lời

10

Như đã nêu trong python unittest doc:

Các TestCase lớp đơn giản nhất sẽ chỉ đơn giản là thực hiện một phương pháp thử nghiệm (tức là một phương pháp có tên bắt đầu với thử nghiệm)

Vì vậy, bạn sẽ cần phải thay đổi tên phương thức của bạn thành một cái gì đó như thế này:

def test_add_returns_zero_for_emptyString(self): 
    self.assertEqual(Add(' '), 0) 
5

Sidenote: Ngoài ra, tên của tệp trong đó tất cả các thử nghiệm đều có nên bắt đầu bằng 'test_'

+0

Bạn muốn nói đến quy ước? – MattSom

+1

Vì mục đích quy ước, và nếu bạn sử dụng các công cụ như ** mũi ** để chạy thử nghiệm đơn vị. Nếu tên tệp bắt đầu bằng 'test_', chỉ khi đó mũi mới có thể phát hiện ra các thử nghiệm bên trong nó và chạy chúng. – Shashank

Các vấn đề liên quan