我怎样才能防止自己吃掉我的测试参数之一?
How can I prevent self from eating one of my test parameters?
我的测试模块中有:
import pytest
from src.model_code.central import AgentBasic
class AgentBasicTestee(AgentBasic):
pass
@pytest.fixture()
def agentBasic():
return AgentBasicTestee()
@pytest.mark.parametrize('alpha, beta, delta, expected', [
(2, 1, 1, pytest.approx(0.5)),
(2, 2, 2, pytest.approx(-0.9375 / 0.75)),
])
def test_b3(agentBasic, AgentCOne,alpha, beta, delta, expected):
assert(agentBasic.b3(alpha, beta, delta) == expected)
在我的导入模块中
from src.model_code.crra_utility import AgentCrra
AgentCOne = AgentCrra
class AgentBasic:
@staticmethod
def b3(alpha, beta, delta):
"""define matric element b3"""
k = AgentCOne.k_bar(alpha, beta, delta)
c = AgentCOne.c_bar(alpha, beta, delta)
return -c/k
我收到的错误消息是:
> c = AgentCOne.c_bar(alpha, beta, delta)
E TypeError: c_bar() missing 1 required positional argument: 'delta'
注:
def c_bar(self, alpha, beta, delta):
"""non-stochastic steady-state for consumption"""
k = self.k_bar(alpha, beta, delta)
return k ** alpha - delta * k
到目前为止,self 接受了我的参数之一 s.t。三角洲保持为空。如何防止帽子?
您似乎需要在调用 c_bar
之前实例化 AgentCOne
因为 c_bar
不是静态方法(并且会将第一个参数作为 self
).
c = AgentCOne.c_bar(alpha, beta, delta)
# should be
c = AgentCOne().c_bar(alpha, beta, delta)
我的测试模块中有:
import pytest
from src.model_code.central import AgentBasic
class AgentBasicTestee(AgentBasic):
pass
@pytest.fixture()
def agentBasic():
return AgentBasicTestee()
@pytest.mark.parametrize('alpha, beta, delta, expected', [
(2, 1, 1, pytest.approx(0.5)),
(2, 2, 2, pytest.approx(-0.9375 / 0.75)),
])
def test_b3(agentBasic, AgentCOne,alpha, beta, delta, expected):
assert(agentBasic.b3(alpha, beta, delta) == expected)
在我的导入模块中
from src.model_code.crra_utility import AgentCrra
AgentCOne = AgentCrra
class AgentBasic:
@staticmethod
def b3(alpha, beta, delta):
"""define matric element b3"""
k = AgentCOne.k_bar(alpha, beta, delta)
c = AgentCOne.c_bar(alpha, beta, delta)
return -c/k
我收到的错误消息是:
> c = AgentCOne.c_bar(alpha, beta, delta)
E TypeError: c_bar() missing 1 required positional argument: 'delta'
注:
def c_bar(self, alpha, beta, delta):
"""non-stochastic steady-state for consumption"""
k = self.k_bar(alpha, beta, delta)
return k ** alpha - delta * k
到目前为止,self 接受了我的参数之一 s.t。三角洲保持为空。如何防止帽子?
您似乎需要在调用 c_bar
之前实例化 AgentCOne
因为 c_bar
不是静态方法(并且会将第一个参数作为 self
).
c = AgentCOne.c_bar(alpha, beta, delta)
# should be
c = AgentCOne().c_bar(alpha, beta, delta)