如何使用 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 ===========
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 ===========