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)


posted @ 2020-12-15 22:23  寂静音无  阅读(139)  评论(0)    收藏  举报