韦奇_pytest_L1_计算器实战

L1_计算器实战

Calculator 测试设计

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