如何使用 pytest 对斐波那契进行测试 class 或函数?

How to make a test class or function for fibonacci with pytest?

def fibR(n):
 if n==1 or n==2:
  return 1
 return fib(n-1)+fib(n-2)
print (fibR(5))

例如,我如何对斐波那契进行测试 class?

这是第 n 个斐波那契的封闭方程

您需要创建一个 returns 该值的函数。那么

def fibequation(n):
    return ((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))

#Testing fibR
assert(fibR(10),fibequation(10))

或者您可以测试已知的 fib 值

f12 = 144
f14 = 377
assert(fibR(12),f12)
assert(fibR(14),f14)

如果您的 fibR 符合这些值,则表现良好。

我将您现有的代码保存在名为 fib.py:

的文件中
def fibR(n):
 if n==1 or n==2:
  return 1
 return fibR(n-1)+fibR(n-2)

在同一目录中,我创建了一个名为 test_fib.py:

的文件
import pytest
from fib import fibR

def test_fib_1_equals_1():
    assert fibR(1) == 1

def test_fib_2_equals_1():
    assert fibR(2) == 1

def test_fib_6_equals_8():
    assert fibR(6) == 8

如果我从命令行在这个目录中 运行 py.test,我可以使用这些测试自动检查 fibR 的正确性:

collected 3 items 

test_fib.py ...

================= 3 passed in 0.01 seconds ===========