私は本当にこのエラーが例外について何かをアサートしようとしましたが、AttributeErrorを取得しましたか?
AttributeError("'_AssertRaisesContext' object has no attribute 'exception'",).
私は2つの引数、aとbのを受け入れる機能のパワーを書き込むしようとしているを参照し、電力Bに上げ計算を理解し、TypeError
では発生しません。入力がintまたはfloat以外のものであればメッセージArgument must be integer or float
。
これは私のコードです:
def power(a, b):
try :
if b == 0:
return 1
elif b == 1:
return a;
else:
return a*pow(a, b-1)
except TypeError :
print ('Argument must be integer or float')
、これはそれをテストするために使用してコードイムです:
from unittest import TestCase
class PowerTestCases(TestCase):
def test_returns_correct_power(self):
base, exp = 2, 3
res = power(base, exp)
self.assertEqual(res, 8, msg='Expected {}, got {}'.format(8, res))
def test_return_1_when_exp_is_0(self):
base, exp = 4, 0
res = power(base, exp)
self.assertEqual(res, 1, msg='A number power 0 should be 1')
def test_return_0_when_base_is_0(self):
base, exp = 0, 10
res = power(base, exp)
self.assertEqual(res, 0, msg='O power any number should be 0')
def test_non_digit_argument(self):
with self.assertRaises(TypeError) as context:
base, exp = 'base', 'exp'
res = power(base, exp)
self.assertEqual(
'Argument must be interfer or float',
context.exception.message,
'Only digits are allowed as input'
)
[Pythonのunittest.TestCase.assertRaisesが機能していない]の可能性のある重複(http://stackoverflow.com/質問/ 39450098/python-unittest-testcase-assertraises-not-working) –
関数は例外を発生させません。不正な型が渡された場合、単に文字列を標準出力に出力し、 'None'を返します。詳細については、複製を参照してください。 –