def calc_init():
    print("calc_init")
    return Calc()
class TestCalc:
    # # 类的初始化,方法二:每次都会被执行,不推荐
    # def setup(self):
    #     self.calc = Calc()

    # 类的初始化,方法三:类初始化时只会被执行一次,推荐方法
    def setup_class(self):
        self.calc = Calc()

    # pytest的mark方法,可以实现测试用例的参数化功能.
    # 前边是参数,后边是传入的数据
    # 乘法测试用例
    @pytest.mark.parametrize(
        'a, b, c',
        [
            # 整数
            [1, 2, 2],
            [2, 9, 18],
            [-1, -2, 2],
            [-1, 2, -2],
            [2, -2, -4],
            [999999, 999999, 999998000001],
            # 小数
            [0.2, 0.3, 0.06],
            [-0.2, 0.3, -0.06],
            [0.2, -0.3, -0.06],
            [-0.2, -0.3, 0.06],
            # 小数和整数的混合
            [2, 0.2, 0.4],
            [2, -0.2, -0.4],
            [-2, 0.2, -0.4],
            [-2, -0.2, 0.4],
            # 乘0
            [2, 0, 0],
            [0, 1, 0],
            [-2, 0, 0],
            [0, 0, 0],
            [0.1, 0, 0],
            [-0.1, 0, 0],
            [0, -0.1, 0],
        ])
    def test_mul(self, a, b, c):
        # # 类的初始化,方法一:引入不同参数,类被反复初始化,逻辑复杂时,成本比较大,不推荐
        # 多个测试用例使用同一个类,利用setup或者setup_class
        # calc = Calc()
        assert self.calc.mul(a, b) == c

    # 特殊值用例--类型异常
    @pytest.mark.parametrize('a, b', [['a', 'b'], ['a', 0.3], ['a', -0.3]])
    def test_mul1(self, a, b):
        with pytest.raises(TypeError):
            assert self.calc.mul(a, b)

    # 特殊值用例
    @pytest.mark.parametrize('a, b', [
        ['a', 0],
        ['a', -3],
    ])
    def test_mul2(self, a, b):
        with pytest.raises(Exception):
            assert self.calc.mul(a, b)

    # 特殊值用例---不懂,为什么会出来aaa的结果
    @pytest.mark.parametrize('a, b, c', [
        ['a', 3, 'aaa'],
    ])
    def test_mul2(self, a, b, c):
        assert self.calc.mul(a, b) == c

    # 除法测试用例
    @pytest.mark.parametrize(
        'a, b, c',
        [
            # 整数相除为整数
            [2, 1, 2],
            [6, 2, 3],
            [6, -2, -3],
            [-6, 2, -3],
            [-6, -2, 3],
            # 整数相除为小数
            [3, 2, 1.5],
            [3, -2, -1.5],
            [-3, 2, -1.5],
            [-3, -2, 1.5],
            # 结果除不尽
            [4, 3, 1.3333333333333333],
            [4, -3, -1.3333333333333333],
            [-4, 3, -1.3333333333333333],
            [-4, -3, 1.3333333333333333],

            # 0除以任何值
            [0, 2, 0],
            [0, -2, 0],
            [0, -0.1, 0],
            [0, 0.1, 0]
        ])
    def test_div(self, a, b, c):
        # # 类的初始化,方法一:引入不同参数,类被反复初始化,逻辑复杂时,成本比较大,不推荐
        # 多个测试用例使用同一个类,利用setup或者setup_class
        # calc = Calc()
        assert self.calc.div(a, b) == c

    # 除零异常值用例
    @pytest.mark.parametrize('a, b', [
        [2, 0],
        [-2, 0],
        [0.2, 0],
        [-0.2, 0],
    ])
    def test_div1(self, a, b):
        # 断言一定引发异常,利用with pytest.raises(异常类型):
        # 若不知道具体异常,可以直接写pytest.raises(Exception):
        with pytest.raises(ZeroDivisionError):
            assert self.calc.div(a, b)

    # 除零异常值用例
    @pytest.mark.parametrize('a, b',
                             [['a', 'b'], ['a', 3], ['a', -3], ['a', 0.2],
                              ['a', -0.2], ['a', 0], [0, 'a']])
    def test_div2(self, a, b):
        # 断言一定引发异常,利用with pytest.raises(异常类型):
        # 若不知道具体异常,可以直接写pytest.raises(Exception):
        with pytest.raises(TypeError):
            assert self.calc.div(a, b)

    # 流程测试,先乘后除,先除后乘
    @pytest.mark.parametrize('a, b, d, e', [[2, 3, 6, 1], [-3, 4, 6, -2]])
    def test_process(self, a, b, d, e):
        c = self.calc.mul(a, b)
        assert self.calc.div(c, d) == e
Exemple #3
0
 def setup_class(cls):
     print('setup_class method')
     cls.calc = Calc()
Exemple #4
0
def calc_init():
    print("setup_class")
    return Calc()
 def setup_class(self):
     self.calc = Calc()
class TestCalc:
    # # 类的初始化,方法二:每次都会被执行,不推荐
    # def setup(self):
    #     self.calc = Calc()

    # 类的初始化,方法三:类初始化时只会被执行一次,推荐方法
    def setup_class(self):
        self.calc = Calc()

    # # 这个方法放到类外边可以使用,但是在类内报错
    # @staticmethod
    # def load_data1(cls, path):
    #     with open(path) as f:
    #         data = yaml.safe_load(f)
    #         keys = ",".join(data[0].kes())
    #         values = [list(d.values()) for d in data]
    #         data = {'key': keys, 'values': values}
    #         return data

    # pytest的mark方法,可以实现测试用例的参数化功能.
    # 前边是参数,后边是传入的数据
    # 乘法测试用例
    # @pytest.mark.parametrize(load_data1()['keys'], load_data1()['values'])
    # def test_mul(self, a, b, c):
    #     # # 类的初始化,方法一:引入不同参数,类被反复初始化,逻辑复杂时,成本比较大,不推荐
    #     # 多个测试用例使用同一个类,利用setup或者setup_class
    #     # calc = Calc()
    #     assert self.calc.mul(a, b) == c

    # 特殊值用例--类型异常
    @pytest.mark.parametrize('a, b', [
        ['a', 'b'],
        ['a', 0.3],
        ['a', -0.3]
    ])
    def test_mul1(self, a, b):
        with pytest.raises(TypeError):
            assert self.calc.mul(a, b)

    # 特殊值用例
    @pytest.mark.parametrize('a, b', [
        ['a', 0],
        ['a', -3],
    ])
    def test_mul2(self, a, b):
        with pytest.raises(Exception):
            assert self.calc.mul(a, b)

    # 特殊值用例---不懂,为什么会出来aaa的结果
    @pytest.mark.parametrize('a, b, c', [
        ['a', 3, 'aaa'],
    ])
    def test_mul2(self, a, b, c):
        assert self.calc.mul(a, b) == c

    # 除法测试用例
    @pytest.mark.parametrize('a, b, c', [
        # 整数相除为整数
        [2, 1, 2],
        [6, 2, 3],
        [6, -2, -3],
        [-6, 2, -3],
        [-6, -2, 3],
        # 整数相除为小数
        [3, 2, 1.5],
        [3, -2, -1.5],
        [-3, 2, -1.5],
        [-3, -2, 1.5],
        # 结果除不尽
        [4, 3, 1.3333333333333333],
        [4, -3, -1.3333333333333333],
        [-4, 3, -1.3333333333333333],
        [-4, -3, 1.3333333333333333],

        # 0除以任何值
        [0, 2, 0],
        [0, -2, 0],
        [0, -0.1, 0],
        [0, 0.1, 0]
    ])
    def test_div(self, a, b, c):
        # # 类的初始化,方法一:引入不同参数,类被反复初始化,逻辑复杂时,成本比较大,不推荐
        # 多个测试用例使用同一个类,利用setup或者setup_class
        # calc = Calc()
        assert self.calc.div(a, b) == c

    # 除零异常值用例
    @pytest.mark.parametrize('a, b', [
        [2, 0],
        [-2, 0],
        [0.2, 0],
        [-0.2, 0],

    ])
    def test_div1(self, a, b):
        # 断言一定引发异常,利用with pytest.raises(异常类型):
        # 若不知道具体异常,可以直接写pytest.raises(Exception):
        with pytest.raises(ZeroDivisionError):
            assert self.calc.div(a, b)

    # 除零异常值用例
    @pytest.mark.parametrize('a, b', [
        ['a', 'b'],
        ['a', 3],
        ['a', -3],
        ['a', 0.2],
        ['a', -0.2],
        ['a', 0],
        [0, 'a']
    ])
    def test_div2(self, a, b):
        # 断言一定引发异常,利用with pytest.raises(异常类型):
        # 若不知道具体异常,可以直接写pytest.raises(Exception):
        with pytest.raises(TypeError):
            assert self.calc.div(a, b)

    # 流程测试,先乘后除,先除后乘
    @pytest.mark.parametrize('a, b, d, e', [
        [2, 3, 6, 1],
        [-3, 4, 6, -2]
    ])
    def test_process(self, a, b, d, e):
        c = self.calc.mul(a, b)
        assert self.calc.div(c, d) == e
Exemple #7
0
    def setup_class(cls):
        print("setup_class classmethod")

        cls.calc = Calc()
Exemple #8
0
 def setup_class(self):
     print("setup_class")
     self.calc = Calc()
Exemple #9
0
def calc_init():
    print('setup_class')
    return Calc()