[email protected]装饰器及执行级别
作用:相当于Jemeter中的set up和tear down函数
set up:在所有方法之前执行
tear down:在所有方法之后执行
import pytest
# 装饰器,声明下面的函数是setup函数,即会在所有方法之前执行
#scope参数:可省略,缺省值默认是function级别
#function:每个函数或方法之前执行一次
#class:每个类之前执行一次
# module:每个模块之前执行一次,一个模块包含多个类(一个模块就是当前文件)
# session:(优先级最高)fixture的内容写到conftest.py里,相同目录里的所有文件共用这个配置
#autouse=True:自动调用,不需要作为参数传到test方法里
@pytest.fixture(scope='module')
def fun1():
print('===测试开始')
yield # yield关键字之后的语句是teardown用法
print('测试结束===')
class Test1:
def test_some1(self, fun1):
assert 1 == 2
def test_some2(self, fun1):
assert 1 == 1
class Test2:
def test_some1(self, fun1):
assert 1 == 2
def test_some2(self, fun1):
assert 1 == 1
class Test3:
def test_some1(self, fun1):
assert 1 == 2
def test_some2(self, fun1):
assert 1 == 1
if __name__ == '__main__':
# -s:允许执行print()语句,-v:详细的测试信息
pytest.main([__file__, '-sv'])
test_pytest2.py模块中有3个类,但只执行一次装饰器里的语句
session级别举例:
conftest.py文件
import pytest
#autouse=True--自动使用
# 其他模块里的测试方法不用专门写(def test_c01(self,func100):)进行调用了
#可以直接这样写:def test_c01(self):
@pytest.fixture(scope='session',autouse=True)
def func100():
print('====测试开始======')
yield
print('====测试结束=====')
if __name__ == '__main__':
pytest.main([__file__,'-sv'])
test_pytest.py文件
import pytest
class Test:
def test_c01(self):
assert 1 == 1
def test_c02(self):
assert 1 == 2
if __name__ == '__main__':
# __file__当前文件名,-v:报错详细,展示是哪个类的哪个方法报错
pytest.main([__file__, '-sv'])
执行test_pytest.py文件,会自动执行conftest.py里的内容
[email protected]装饰器
使用场景:如果一个模块中需要测试多个用例,每次都新加test_方法和断言会很冗余
装饰器作用:让测试数据参数化,实现数据驱动,方便代码和测试数据分离
import pytest
# 如果一个模块中有多个测试用例
# 以前的写法:代码冗余,效率不高
# class Test:
# def test_c01(self):
# assert 1==2
# def test_c02(self):
# assert 2==3
# def test_c03(self):
# assert 3==5
# 使用装饰器,只需要设置列表的值即可
class Test1:
list=[[1,2],[2,3],[3,5],[6,6]]
@pytest.mark.parametrize('expected_result,actual_result',list)
def test_c100(self,expected_result,actual_result):
assert expected_result==actual_result
if __name__ == '__main__':
pytest.main([__file__,'-sv'])
标签:__,框架,self,pytest,assert,Pytest,自动化,test,def
From: https://blog.csdn.net/Ambition_ZM/article/details/137563679