【发布时间】:2019-08-04 18:02:05
【问题描述】:
我试图更好地理解如何使用pytest 进行彻底的单元测试,但遇到了一种我不确定如何最好地解决的情况。我在 SO 上发现了关于参数化装置本身的类似问题,但我认为这不是我想要在这里做的。但也许我并没有完全了解灯具本身?
这里是一些示例代码:
应用代码:
class Person:
def __init__(self, fname: str, lname: str):
self.fname = fname
self.lname = lname
def upper_fullname(self):
return f'{self.fname} {self.lname}'.upper()
测试:
import pytest
@pytest.fixture(scope="module")
def fixture_mm(conf={"fname": "mickey", "lname": "mouse"}):
return Person(**conf)
@pytest.fixture(scope="module")
def fixture_bb(conf={"fname": "bugs", "lname": "bunny"}):
return Person(**conf)
@pytest.mark.parametrize(
'person, expected_result',
[(fixture_mm, "MICKEY MOUSE"), (fixture_bb, "BUGS BUNNY")])
def test_uppernames(person, expected_result):
assert person.upper_fullname() == expected_result
我希望这两个测试都能通过,但我收到一条错误消息,提示 AttributeError: 'function' object has no attribute 'upper_fullname'。我在这里错过了什么?
谢谢。
【问题讨论】: