# data为一个字典,用key值"div"取出对应的测试数据,给 a, b 和 expect进行参数化
@pytest.mark.parametrize('a, b, expect', get_data()["div"])
# 定义一个方法用于测试 Calc里面的div方法,参数中的initialization会调用fixture,返回Calc的实例
def test_div(self, a, b, expect, initialization):
# 捕捉异常, 除数是0
if b == 0:
raise ZeroDivisionError
# 捕捉异常, 被除数和除数如果不是int和float类型
elif not (isinstance(a,int) or isinstance(a,float)) or not (isinstance(b,int) or isinstance(b,float)):
raise TypeError
else:
print(f"type=={type(a)}")
result = initialization.div(a, b)
# 用 assert 断言,比对 result和expect的值是否相等
assert result == Decimal(str(expect))
print("result is {}, expect is {}".format(result, expect))
# data为一个字典,用key值"div"取出对应的测试数据,给 a, b 和 expect进行参数化
@pytest.mark.parametrize('a, b, expect', get_data()["div"])
# 定义一个方法用于测试 Calc里面的div方法,参数中的initialization会调用fixture,返回Calc的实例
def test_div(self, a, b, expect, initialization):
# 捕捉异常, 除数是0
if expect == "ZeroDivisionError":
with raises(eval(expect)):
initialization.div(a, b)
elif expect == "Exception":
with raises(eval(expect)):
initialization.div(a, b)
else:
result = initialization.div(a, b)
# 用 assert 断言,比对 result和expect的值是否相等
assert result == Decimal(str(expect))
print("result is {}, expect is {}".format(result, expect))