L1_计算器实战
Calculator 测试设计

被测类
class Calculator:
def add(self, a, b):
if a > 99 or a < -99 or b > 99 or b < -99:
print("请输入范围为【-99, 99】的整数或浮点数")
return "参数大小超出范围"
return a + b
def div(self, a, b):
if a > 99 or a < -99 or b > 99 or b < -99:
print("请输入范围为【-99, 99】的整数或浮点数")
return "参数大小超出范围"
return a / b
data.yaml 测试用例
-
- add-正确入参整数测试-等价类
- 10
- 20
- 30
- 0.5
-
- add-正确入参小数测试-等价类
- 10.6
- 20.87
- 31.47
- 0.5079060852898898
- - add-输入字符入参测试-等价类
- ands
- ands
- 不可输入字符串
- 不可输入字符串
- - add-输入特殊字符入参测试-错误推测法
- ands
- ands
- 不可输入特殊字符
- 不可输入特殊字符
- - add-a为100入参测试-边界值
- 100
- 20
- 参数大小超出范围
- 参数大小超出范围
- - add-a为99入参测试-边界值
- 99
- 20
- 119
- 4.95
- - add-a为-99入参测试-边界值
- -99
- 20
- -79
- -4.95
- - add-a为-100入参测试-边界值
- -100
- 20
- 参数大小超出范围
- 参数大小超出范围
- - add-b为100入参测试-边界值
- 20
- 100
- 参数大小超出范围
- 参数大小超出范围
- - add-b为99入参测试-边界值
- 20
- 99
- 119
- 0.20202020202020202
- - add-b为-99入参测试-边界值
- 20
- -99
- -79
- -0.20202020202020202
- - add-b为-100入参测试-边界值
- 20
- -100
- 参数大小超出范围
- 参数大小超出范围
pytests.py 测试代码
import os
import yaml
import pytest
'''被测类'''
class Calculator:
def add(self, a, b):
if a > 99 or a < -99 or b > 99 or b < -99:
print("请输入范围为【-99, 99】的整数或浮点数")
return "参数大小超出范围"
return a + b
def div(self, a, b):
if a > 99 or a < -99 or b > 99 or b < -99:
print("请输入范围为【-99, 99】的整数或浮点数")
return "参数大小超出范围"
return a / b
'''读取yaml用例'''
with open("data.yaml", "r" ,encoding='utf-8',errors='ignore') as file:
data = yaml.safe_load(file)
'''执行yaml用例'''
@pytest.mark.parametrize("case", data)
def test_Calculator_add(case):
shili = Calculator()
print(case)
'''验证add方法'''
assert shili.add(case[1], case[2]) == case[3]
'''验证div方法'''
assert shili.div(case[1], case[2]) == case[4]
if __name__ == '__main__':
'''执行命令'''
os.system('pytest pytests.py')
生成 allure 报告
pytest pytests.py --alluredir=./result/1
allure serve ./result/1