【发布时间】:2019-02-25 15:26:58
【问题描述】:
假设我有以下课程:
class SimpleClass:
def __init__(self, value):
self.__value = value
@property
def value(self):
return self.__value
def power_value(self, power):
return self.value**power
我将创建这个类的一个实例。
x = SimpleClass(2)
我想创建一个测试,通过将power_value 方法与预期结果进行比较来断言它可以正常工作。
def test_power_value(simple, power, result):
assert simple.power_value(power) == result
我正在寻找使用pytest 实现此功能的正确方法,因为我这样做的方式会引发错误(pytest 正在寻找simple、power 和result成为固定装置)。最终,我希望能够按如下方式使用此测试:
test_power_value(x, 2, 4)
with pytest.raises(AssertionError):
test_power_value(x, 2, 5)
【问题讨论】:
-
不相关,但如果您使用的是 Python 2.7.x,则属性仅适用于新样式类(继承自
object的类)。此外,您可能应该使用“受保护”属性(单前导下划线) - 双前导下划线实际上是为了防止复杂库/框架的基类中的意外名称冲突,实际上很少有用。 -
定义灯具有什么问题?你的
with pytest.raises(AssertionError)块也没有任何意义,因为你已经测试过结果等于 4,它不能(或者,如果你以某种方式覆盖了__eq__方法,不应该)等于 5