2017-03-22 10 views
0

私はPythonの単体テストに挑んでおり、次の問題(source)を解決する方法を見つけることに問題があります。Pythonユニットテストの方法

is_primeとprint_next_primeの2つの機能があります。 testprint_next_primeにしたければ、as_primeが であり、asprint_next_primeが正しいことを確認する必要があります。この場合、 関数print_next_primeは1単位であり、is_primeは別の単位です。 単体テストは一度に1つのユニットしかテストしないので、print_next_primeを正確にテストする方法については、 を慎重に考える必要があります。

def is_prime(number): 
    """Return True if *number* is prime.""" 
    for element in range(number): 
        if number % element == 0: 
            return False 

    return True 

def print_next_prime(number): 
    """Print the closest prime number larger than *number*.""" 
    index = number 
    while True: 
        index += 1 
        if is_prime(index): 
            print(index) 

どのようにこれらのメソッドの両方のためのユニットテストを書くのでしょうか?残念ながら、ソースはこの質問に答えることはありません。

+1

'is_prime'関数は、ゼロで割ります。 – ForceBru

+0

はい、それは本当です。これは単体テストの設定例です。それはその部分で失敗することを意味します。 – Benjh

+0

ソースは単体テストについて説明しました。最後までis_prime関数が正しく実装されていることを確認してください。 – manvi77

答えて

0

コードは、最初に、これは一つのケースtest_is_five_primeのユニットテストケースであるis_prime

#primes.py 

def is_prime(number): 
    """Return True if *number* is prime.""" 
    if number <= 1: 
     return False 

    for element in range(2, number): 
     if number % element == 0: 
      return False 

    return True 

を定義する必要があり、そのblogの後部分に固定されています。他の例としては、test_is_four_non_prime,test_is_zero_not_primeなどがあります。同じように、他の関数print_next_primeのテストを書くことができます。あなたは同じ方法で試すことができます。

#test_primes.py 

import unittest 
from primes import is_prime 

class PrimesTestCase(unittest.TestCase): 
    """Tests for `primes.py`.""" 

    def test_is_five_prime(self): 
     """Is five successfully determined to be prime?""" 
     self.assertTrue(is_prime(5)) 

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

説明してくれてありがとう! – Benjh