class TestCalc: def setup_class(self): print("setup_class") self.calc = Calc() def teardown_class(self): print("teardown_class") def setup(self): print("setup") def teardown(self): print("teardown") @pytest.mark.parametrize('a, b, expect', yaml.safe_load(open("datas/data.yml"))) # @pytest.mark.run(order=-1) def test_zadd_1(self, a, b, expect): result = self.calc.add(a, b) print(f"result = {result}") assert result == expect def get_steps(self): with open('steps/steps.yml') as f: return yaml.safe_load(f) def any_steps(self, data, expect): steps = self.get_steps() for step in steps: print(f"step == {step}") if 'add' == step: assert self.calc.add(*data) == expect elif 'add1' == step: assert self.calc.add1(data) == expect @pytest.mark.parametrize('a, b, expect', yaml.safe_load(open("datas/data.yml"))) # @pytest.mark.run(order=-1) def test_zadd_2(self, a, b, expect): data = (a, b) self.any_steps(data, expect) # result1 = self.calc.add(*data) # assert result1 == expect # # result2 = self.calc.add1(data) # assert result2 == expect # @pytest.mark.first def test_sub(self): assert 1 == self.calc.sub(2, 1) # @pytest.mark.run(order=3) def test_mul(self): assert 6 == self.calc.mul(2, 3) # @pytest.mark.run(order=4) def test_div_1(self): result = self.calc.div(1, 1) print(f"result = {result}") assert result == 1
class TestCalc: def setup_class(self): print("setup_class") self.calc = Calc() def teardown_class(self): print("teardown_class") def setup(self): print("setup") def teardown(self): print("teardown") # 参数化数据方式传参,可以是列表形式或者元组形式 # @pytest.mark.parametrize("a,b,expect",[ # (1, 1, 2), # [100, 100, 200], # [0.1, 0.1, 0.2], # (0, 10, 10), # ]) # 使用yaml传参,基于数据的数据驱动 @pytest.mark.parametrize("a,b,expect", yaml.safe_load(open("data.yaml"))) # 定义一个加的测试用例 def test_add(self, a, b, expect): # 实例化一个类 calc = Calc() result = self.calc.add(Decimal(str(a)), Decimal(str(b))) print(f'result={result}') assert result == Decimal(str(expect)) # # 使用yaml传参,基于数据的数据驱动 # @pytest.mark.parametrize("a,b,expect",yaml.safe_load(open("data.yaml"))) # # 定义一个加的测试用例 # def test_add(self,a,b,expect): # # 实例化一个类 # result = self.calc.add(a, b) # assert result == expect # 再定义一个加的测试用例 # def test_add(self): # # 实例化一个类 # calc = Calc() # result = calc.add(0.1, 0.1) # assert result == 0.2 def test_div(self): calc = Calc() result = calc.div(1, 1) assert result == 1 def test_yaml(self): print(yaml.safe_load(open("data.yaml"))) # 定义一个除的方法 def test_div(self): pass
class TestCalc: def setup(self): self.calc = Calc() @pytest.mark.parametrize(["a", "b", "c"], yaml.safe_load( open( os.path.join(os.path.dirname(__file__), '..', 'test_data', 'test_add_data.yaml')))) def test_add(self, a, b, c): print(f"测试数据分别是:{a},{b}") result = self.calc.add(a, b) print(result) assert c == result @pytest.mark.parametrize(["a", "b", "c"], yaml.safe_load( open( os.path.join(os.path.dirname(__file__), '..', 'test_data', 'test_div_data.yaml')))) def test_div_01(self, a, b, c): """正常情况下测试""" print(f"测试数据分别是:{a},{b}") result = self.calc.div(a, b) print(result) assert c == result @pytest.mark.parametrize(["a", "b"], [(5, 0)]) def test_div_02(self, a, b): """除数为零""" print(f"测试数据分别是:{a}, {b}") with pytest.raises(ZeroDivisionError): self.calc.div(5, 0) # print(self.calc.div(5, 0)) @pytest.mark.parametrize(["a", "b"], [(10, 3)]) def test_div_03(self, a, b): """商为无限循环小数时""" print(f"测试数据分别是:{a}, {b}") result = self.calc.div(a, b) assert 3.3333333333 == round(result, 10)