我正在编写一个数值优化器的测试。为了测试它,我需要为它提供一个最小化的目标函数,如下所示
import pytest
from optimizer import OptimizerClass
def test_optimizer():
def foo(params):
return[(params[0]+2)**2]
optimizer = OptimizerClass(objective_function = foo)
solution = optimizer.minimize()
assert abs(solution - (-2)) <= 10 ** -6
- 我怎么做才能使它工作并遵循样式指南?
- 如果我正在编写多个测试函数,都需要实例化
optimizer
对象,我应该在每个函数中实例化optimizer
对象还是只在外部实例化一次?我知道两者都是可能的,但我不知道根据Python风格指南哪一个是正确的。
ad-你的解决方案看起来已经很好了,是什么不工作吗?
广告2。由于优化器应该有内部状态,我认为每次测试都使用一个新的会更好。查看一下pytest fixture。例子:
@pytest.fixture
def optimizer():
def foo(params):
#...
return OptimizerClass(objective_function = foo)
def test_1(optimizer):
# pytest will automatically resolve the argument by name and pass the function result into the test.
result = optimizer.minimize()
assert ...