课后作业
- 编写 Calc 这个类add() ,div() 这两个方法的测试用例
- 按照等价类去设计测试用例
- 把代码上传到github, 并回贴你的github的地址
https://github.com/llpanyuan/calc/blob/master/testing/test_calc.py
设计用例考虑的很全面,
用例里面需要做异常处理,除数为0的情况
from func.Calc import Calc
import pytest
import yaml
'''
@用例设计思路
1、针对add(),对输入内容类型做区分:正整数,负整数,正浮点数,负浮点数,非法类型
2、针对div(),将除数和被除数分开,除数等价划分为:正数,负数,0,非法类型;被除数等价划分为:0,正数,负数,非法类型
'''
class Test_Calc():
def setup(self):
self.calc = Calc()
@pytest.mark.parametrize(["a","b","c"], yaml.safe_load(open("add_normal_data.yaml")))
def test_add_normal(self,a,b,c):
'''
针对加法中正常数值的等价类用例
:param a: 加数1
:param b: 加数2
:param c: 结果
将数字类型划分为正整数,负整数,正浮点数,负浮点数,进行组合相加
'''
assert round(self.calc.add(a,b),1) == c
@pytest.mark.parametrize(["a", "b", "c"], yaml.safe_load(open("add_error_data.yaml")))
def test_add_error(self,a,b,c):
'''
针对加法异常值的用例
:param a: 加数1
:param b: 加数2
:param c: 结果
设计了两个加数中存在不是数字类型的用例
'''
with pytest.raises(TypeError): #捕获异常
assert self.calc.add(a, b) == c
@pytest.mark.parametrize(["a","b","c"],yaml.safe_load(open("./div_normal_data.yaml")))
def test_div_normal(self,a,b,c):
'''
针对div方法正常值的等价类用例
:param a: 分子
:param b: 分母
:param c: 结果
分子划分为:0,正数,负数,分母划分为:正数,负数
'''
assert round(self.calc.div(a, b), 1) == c
@pytest.mark.parametrize(["a","b","c"],yaml.safe_load(open("./div_error_data.yaml")))
def test_div_error_01(self,a,b,c):
'''
针对div方法异常输入的等价类用例
:param a: 分子
:param b: 分母
:param c: 结果
分子分母中存在非数字类型的用例
'''
with pytest.raises(TypeError) as exc: #捕获异常
round(self.calc.div(a, b), 1)
assert exc.type == c
def test_div_error_02(self):
'''
针对div方法中非法数字输入的用例,即分母为0的情况
:return:
'''
with pytest.raises(ZeroDivisionError) as exc: #捕获异常
self.calc.div(4,0)
assert exc.type == ZeroDivisionError
if __name__ == '__main__':
pytest.main()