2012-05-10 8 views
8

Pythonでは、クラスのテストケースをどのように記述しますか?例:Python ...テストクラス?

class Employee(object): 
    num_employees = 0 


# numEmployess is incremented each time an employee is constructed 
    def __init__(self, salary=0.0, firstName="", lastName="", ssID="", DOB=datetime.fromordinal(1), startDate=datetime.today()): #Employee attributes 
    self.salary=salary 
    self.firstName = firstName 
    self.lastName = lastName 
    self.ssID = ssID 
    self.DOB = DOB 
    self.startDate = startDate 
    Employee.num_employees += 1 #keep this 

    def __str__(self): #returns the attributes of employee for print 
    return str(self.salary) + ', ' + self.firstName + ' ' + self.lastName + ', ' + self.ssID + ', ' + str(self.DOB) + ', ' + str(self.startDate) 

ユニットテストと呼ばれるものがあります。しかし、私はどのようにそれがまったく機能するのか分かりません。私がオンラインで理解した良い説明を見つけることができませんでした。

+1

あなたは[このような]意味ですか(http://docs.python.org/library/unittest.html)? –

答えて

7

doctestが最も簡単です。テストはdocstringに書かれており、REPLエピソードのように見えます。

... 

    def __str__(self): 
    """Returns the attributes of the employee for printing 

    >>> import datetime 
    >>> e = Employee(10, 'Bob', 'Quux', '123', startDate=datetime.datetime(2009, 1, 1)) 
    >>> print str(e) 
    10, Bob Quux, 123, 0001-01-01 00:00:00, 2009-01-01 00:00:00 
    """ 
    return (str(self.salary) + ', ' + 
      self.firstName + ' ' + 
      self.lastName + ', ' + 
      self.ssID + ', ' + 
      str(self.DOB) + ', ' + 
      str(self.startDate) 
      ) 

if __name__ == '__main__': 
    import doctest 
    doctest.testmod() 
2

"Testing Your Code" section of the Hitchhiker's Guide to Pythonは、Pythonで一般的な試験の実践/方法論を説明し、ならびに多かれ少なかれますます複雑ために、特定のツールを導入します。前述したように、doctestは非常に簡単な方法です。そこから、unittest()に移動することもできます。

私の経験では、doctestはすばやく汚れたテストとして使用することができますが、外に出ることに注意してください。モジュールのユーザーが見たくないかもしれない長くて醜いドキュメントストリングにつながる可能性がありますあなたのテストで網羅的で、あらゆる種類のコーナーケースを含んでいるなら、特に。これらのテストをunittest()のような専用のテストフレームワークに移植することは、長期的にはより良い方法です。 docstringを見ている人は誰でもモジュールが実際にどのように動作するかを素早く知ることができるように、doctestに基本を残すことができます。

+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、自分の投稿の下にコメントを残してください。自分の投稿にいつもコメントをつけることができます。そして、十分な[評判](http://stackoverflow.com/help/whats-reputation) [任意の投稿にコメントする]ことができます(http://stackoverflow.com/help/privileges/comment)。 – DaImTo

+1

私の答えは、上記のマイクよりもあまり役に立たないですか?彼がしたことは、unittest()モジュールのドキュメントへのリンクを提供することだけでした。私のリンクはPythonコードをテストするための、より穏やかで徹底した説明を提供します。 –

関連する問題