15

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)

単体テストと呼ばれるものがあることは知っています。しかし、それがどのように機能するかはまったくわかりません。オンラインで理解できる適切な説明が見つかりませんでした。

4

2 に答える 2

10

Hitchhiker's Guide to Pythonの「Testing Your Code」セクションでは、Pythonでの一般的なテスト プラクティス/方法論について説明し、多かれ少なかれますます複雑な順序で特定のツールを紹介します。前述したように、doctest は非常に簡単な方法で開始できます...そして、そこから unittest() 以降に移動したいと思うかもしれません。

私の経験では、doctest は前もって手早く汚いテストとして使用することができます (そして使用する必要があります)。テストを徹底的に行い、あらゆる種類のコーナーケースを含めています。これらのテストを unittest() のような専用のテスト フレームワークに移植することは、長期的にはより良い方法です。docstring を見た人がモジュールが実際にどのように機能するかをすぐに理解できるように、doctest に基本のみを残すことができます。

于 2015-01-23T13:33:07.430 に答える
10

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()
于 2012-05-10T00:22:11.410 に答える