我有一个模型和一个要测试的 Controller :
class Model:
def __init__(self):
self.display = ""
def set_display(self, display):
self.display = display
import pytest
from model import Model
from controller import Controller
@pytest.fixture
def model():
return Model()
@pytest.fixture
def controller(model):
return Controller(model)
def test_clear_button(controller):
controller.button_pressed("4")
controller.button_pressed("2")
controller.button_pressed("C")
assert model.display == "0"
E AttributeError: 'function' 对象没有属性 'display'
以上是我每次运行测试时遇到的错误/失败。
class Controller:
def __init__(self, model):
self.model = model
def button_pressed(self, button_label):
pass
最佳答案
根据 pytest ,通过做:
@pytest.fixture
def model():
return Model()
然后:
@pytest.fixture
def controller(model):
return Controller(model)
您定义了一个名为 controller
的 fixture,它引用另一个名为 model
的 fixture 来在 Controller< 的实例上定义
类。因此,您似乎没有正确引用 model
/model
:
def test_clear_button(controller):
controller.button_pressed("4")
controller.button_pressed("2")
controller.button_pressed("C")
assert controller.model.display == "0"
或者,或者:
def test_clear_button(controller, model):
controller.button_pressed("4")
controller.button_pressed("2")
controller.button_pressed("C")
assert model.display == "0"
关于python - pytest 属性错误 : "function object has no attribute" when referencing fixture in Python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53072765/