如何测试我的代码

时间:2013-12-07 01:01:38

标签: python function class testing python-3.3

我无法获取我想要的代码输出。我想测试一个类和类中定义的函数。这是我的代码:

class Book:
    # the class constructor
    def __init__(self, author, title, book_id):
        self.title = title
        self.author = author
        self.book_id = book_id      
    def __str__(self):
        s = "Books("+self.author+", "+self.title+", "+self.book_id+")"
        return s
    def __repr__(self):
        return str(self)

我尝试尝试测试的是:

 >>> author="Dr. Suess"
>>> title="The Cat in the Hat"
>>> book_id="12345"
>>> Book
<class '__main__.Book'>
>>> 

我得到的输出是最后一行。我可能做错了但我不知道如何测试它。如果有人能告诉我那将是伟大的!

2 个答案:

答案 0 :(得分:2)

当您在解释器中输入Book时,您将获得实际Book类'表示作为输出。 __repr____str__都引用Book实例,而不是类本身。因此,要测试它,您必须实例化Book

>>> b = Book("Dr. Suess", "The Cat in the Hat", "12345")
>>> b
"Books(Dr. Suess, The Cat in the Hat, 12345)"

记住 - 一个类就像一个实例的蓝图。在这种情况下,Book定义了Book的含义,但它实际上并没有定义实际的Book对象 - 要做到这一点,你需要创建一个{{1}使用我所做的代码实例。

答案 1 :(得分:0)

>>> Book
<class '__main__.Book'>

如果在控制台中执行上述操作,则不会调用在实例上创建的__repr__方法。让我解释一下,Book只是一个类对象,它不是一个实例,因为你没有调用任何参数,但是,如果你调用参数,这就是你得到的:

>>> from Books import Book
>>> Book
<class Books.Book at 0x027B0AE8>
>>> Book("Hello", "World", '1234')
Books(Hello, World, 1234)

正如您所看到的,因为我们创建了一个方法的实例,我们能够调用__repr__