python pytest 测试实战 1

from test_pytest.pythoncode.calculator import Calculator
import logging
import pytest


'''
实现参数化
'''

class TestCalc:
    def setup_class(self):
        #setup会在每条用例执行之前分别执行
        #如果想让用例里可以用到calc这个实例,需要让这个calc变成实例变量
        #调用的时候使用self.calc
        self.calc = Calculator()
        logging.info("开始计算")

    def teardown_class(self):
        logging.info("结束计算")

    #加法
    @pytest.mark.parametrize('a, b, expect',[
        [1, 1, 2],
        [0.1, 0.1, 0.2],
        [-1, -2, -3]
    ])
    def test_add(self, a, b, expect):
        #等号右侧是实际结果,左侧是预期结果
        assert expect ==self.calc.add(a, b)

    #减法
    @pytest.mark.parametrize('a, b, expect',[
        [2, 1, 1],
        [0.2, 0.1, 0.1],
        [-2, -4, 2],
        [9, 10, -1]
    ])
    def test_sub(self, a, b, expect):
        #等号右侧是实际结果,左侧是预期结果
        assert expect ==self.calc.sub(a, b)

    #乘法
    @pytest.mark.parametrize('a, b, expect',[
        [2, 1, 2],
        [0.2, 0.1, 0.02],
        [-2, -2, 4],
        [-2, 10, -20],
        [99, 0, 0]
    ])
    def test_mul(self, a, b, expect):
        #等号右侧是实际结果,左侧是预期结果
        assert expect ==self.calc.mul(a, b)

    #除法
    @pytest.mark.parametrize('a, b, expect',[
        [2, 0, 1],
        [0.2, 0.1, 2],
        [-4, -2, 2],
        [-4, 2, -2],
        [5, 10, 0.5]
    ])
    def test_div(self, a, b, expect):
        #等号右侧是实际结果,左侧是预期结果
        if b == 0:
            logging.info("分母为0时无法计算!")
        else:
            assert expect ==self.calc.div(a, b)

作业