pytest测试框架基础(二)
pytest四种setup和teardown模式
1.setup_modoule和teardown_module在整个测试用例所在的文件中所有的方法运行前和运行后运行,只会运行一次
2.setup_class和teardown_class在整个文件中的一个class中所有用例的前后运行
3.setup_method和teardown_method在整class内的每个方法运行前后运行
4.setup_function和teardown_function在非class下属的每个测试方法前后运行
pytest数据驱动
@pytest.mark.parametrize("x",[1,2,3]) 第一个代表测试方法的参数,第二个代表参数所要传递的参数不能传int类型 需要传可迭代的对象
def test_001(x)
x = x+1
assert x = 3
@pytest.mark.parametrize("x,y",[(1,2),(3,4),(5,6)]) 多个需要传递的参数,用元组 "x,y"可以换成迭代的对象,然后按下标取值
def test_001(x,y)
x = x+1
assert x+y = 3
conftest.py中
import pytest
@pytest.fixture(scope="function",autouse=True) 环境初始化、数据清除 第一个代表识别下面函数 第二个参数代表自动执行
def delete_all_lesson():
def fixture(scope="function",params=None, autouse=False, ids=None, name=None)
scope:可选四组参数function、class、moudle、package/session
params一个可选参数,它将导致多个参数调用fixture函数和所有测试使用它
autouse Ture将所有测试激活都可以看到它,False,则需要显使激活fixture
ids 每个参数对应的字符串id列表,因为他们是测试id的一部分,如果没有提供id他们将从参数中自动生成
name:fixture的名字 ,默认为装饰函数的名字, 如果fixture在定义它的同一模块中使用,夹具的功能名称将被请求夹具的功能arg遮盖,解决这个问题的一种方式是将
装饰器函数命名为"fixture_<fixturename>"然后使用@pytest.fixture(name='<fixturename>')。
在conftest中 初始化清除在开始的初始化方法中使用request参数 在最后使用 def fin()方法 在方法外边写上request.addfinalizer(fin) 固定写法,详细写法 https://docs.pytest.org/en/5.1.3/fixture.html#fixtures
@pytest.fixture(scope='moduel',autouse=True)
def delete_all_lesson(request):
#环境/数据清除----teardown
def fin():
print('----测试环境恢复----')
request.addfinalizer(fin)

浙公网安备 33010602011771号