使用doctesting在类内部定义的方法的单元测试

时间:2019-04-02 19:59:24

标签: python python-3.x doctest

我需要定义: 1.对“ init ”进行doctest,这将创建一个半径为2.5的圆“ c1”,并检查访问属性“ radius”是否返回2.5。 2.为“区域”定义一个文档测试,该测试创建一个半径为2.5的圆“ c1”,并检查其计算面积为19.63。

我写了下面提到的代码,但没有得到输出。 请提出建议。

class Circle:

    def __init__(self, radius):

        """
        >>> c1=Circle(2.5).__init__()
        2.5
        """
        self.radius = radius

    def area(self):

        """
        >>> c1=Circle(2.5).area()
        19.63

        """

        return round(math.pi*(self.radius**2),2)

2 个答案:

答案 0 :(得分:2)

__init__()不返回半径,而是返回您创建的Circle对象。 如果您将doctest更新为类似

>>> Circle(2.5).radius
2.5

它应该工作。还要注意,您不应该直接调用__init__()Circle(2.5)就是那样。在这种情况下,您应该得到一个错误,因为您没有传递正确数量的参数。

答案 1 :(得分:1)

这可能是您编写带有doctests的类的方式:

import math

class Circle:

    def __init__(self, radius):

        """
        >>> c1 = Circle(2.5)
        >>> c1.radius
        2.5
        """
        self.radius = radius

    def area(self):

        """
        >>> c1 = Circle(2.5)
        >>> c1.area()
        19.63

        """

        return round(math.pi*(self.radius**2),2)

这是运行doctest以获得详细输出的方法:

$ python -m doctest -v file.py
Trying:
    c1 = Circle(2.5)
Expecting nothing
ok
Trying:
    c1.radius
Expecting:
    2.5
ok
Trying:
    c1 = Circle(2.5)
Expecting nothing
ok
Trying:
    c1.area()
Expecting:
    19.63
ok
2 items had no tests:
    file
    file.Circle
2 items passed all tests:
   2 tests in file.Circle.__init__
   2 tests in file.Circle.area
4 tests in 4 items.
4 passed and 0 failed.
Test passed.