首页 > 解决方案 > 圆周函数的简单pytest?

问题描述

我以前从未使用过 PyTest,对此我感到很困惑。我只是想为我的圆周函数写一个基本的测试。任何帮助将不胜感激。

import math

def getCircumference():
    radius = int(input("Please enter a radius size: "))
    circumference = 2 * math.pi * radius
    print("The circumference of the circle is", circumference)

标签: pythonpytest

解决方案


单元测试的目的是测试功能的有效功能。这最好通过检查函数是否为已知输入返回正确的结果来完成。您的函数不接受输入也不返回任何结果,因此测试起来比应有的复杂得多。它在其他情况下也不太有用。

我对getCircumference函数的期望是:

  • 被命名为 get_circumference (因为 PEP 8)
  • 接受一个参数:半径
  • 返回圆周(它的名字暗示它返回一个圆周,毕竟)

所以:

def get_circumference(radius):
    return 2 * math.pi * radius

然后,测试将执行以下操作:

def test_get_circumference():
    # using pytest.approx to avoid problems related to floating point precision
    assert get_circumference(7) == pytest.approx(43.982297150257104)
    assert get_circumference(3.678) == pytest.approx(23.109555559806516)

另一方面,如果你真的想按原样测试函数,你应该创建一个更复杂的测试,它会覆盖sys.stdin(为了伪造用户输入)和sys.stdout(为了验证输出)。


推荐阅读