当计算机计数100倍时,当电池从设备上耗尽时,我尝试在pytest中引发异常。类:
class Calculator:
def __init__(self, battery: int = 100, filename=None):
self.battery = battery
self.filename = filename
self.check_battery()
def check_battery(self):
if self.battery <= 0:
raise NoBatteryError("The battery has run out")
def add(self, *args):
self.check_battery()
self.battery -= 1
result_add = 0
for number_to_add in args:
result_add += number_to_add
return result_add
class NoBatteryError(Exception):
pass派泰斯特:
def test_battery_by_calculate_100x_times(calc):
# Given
for iteration in range(1, 103):
value = 2
result = calc.add(value, value)
expected_value = value + value
try:
result == expected_value
except NoBatteryError:
assert True输出:
FAILED test_electronic_device_calculator.py::test_battery_by_calculate_100x_times - electronic_devices.calculator.NoBatteryError: The battery has run out
=========1 failed, 29 passed in 0.20s =======简单的测试,如:
def test_check_battery_should_raise_no_battery_error(calc):
calc.battery = 0
with pytest.raises(NoBatteryError):
calc.check_battery()为我工作。我尝试用pytest.raises(NoBatteryError)在for循环中使用--但是我的函数也不能工作。
发布于 2022-11-10 00:10:54
我不确定它是否应该是这样的,但有效:
def test_battery_by_calculate_100x_times(calc):
for iteration in range(0, 102):
value = 2
try:
calc.add(value, value)
except NoBatteryError:
assert Truehttps://stackoverflow.com/questions/74382405
复制相似问题