web自动化08-pytest02
1、数据驱动
unittest数据驱动 @ddt
from unittestreport import ddt, list_data @ddt class TestDdt(unittest.TestCase): @list_data(data) def test_ddt1(self, case_info): print(case_info)
pytest数据驱动@pytest.mark.parametrize(‘取数的后命名’,取的数据)
import pytest data = [1,2,3] # pytest 数据驱动 相当于 for case_info in data 取数 @pytest.mark.parametrize('case_info', data) def test_ddt(case_info): """数据驱动""" print("测试数据", case_info)
2、前置后置-@pytest.fixture
- 1、先声明夹具fixture函数-@pytest.fixture-普通函数加上装饰器@pytest.fixture就成夹具了
- 2、然后函数传递给需要运行前置条件的用例
- 3、分清前置和后置-通过关键字yield,yield前面的是前置条件,yield后面的是后置条件
- 4、可以由多个夹具-def test_fixture(init_case, second_fixture)-执行顺序:第一个夹具前置,第二个夹具前置,用例,第二个夹具后置,第一个夹具后置
- 5、共享夹具-夹具放在conftest.py
- 6、测试函数是否使用夹具,则看函数用例是否有传递夹具函数名---用的多
- 7、夹具的作用域-运行几次的问题
- function级别 -@pytest.fixture
- class-@pytest.fixtrue(scope='class')
- moudle-@pytest.fixtrue(scope='module')
- package(包)-@pytest.fixtrue(scope='package')
- session(项目级别)-@pytest.fixtrue(scope='session')
- 8、夹具侧-autouse-则这个夹具自动添加,自动运行-用的不多
- 夹具定义侧:示例1:@pytest.fixtrue(autouse=True)
- 示例2:@pytest.fixtrue(scope='class',autouse=True)
- 夹具侧没用autouse-则可以在函数侧设置-比如@pytest.mark.usefixtures('夹具名')
#夹具定义,比如说conftest.py中 @pytest.fixture def init_case(): """前置""" print("pytest用例执行之前") yield print("pytest用例执行之后") # 用例侧,引用夹具init_case,,假如有两个,则如下,逗号隔开 def test_fixture(init_case, second_fixture): print("这是第一个用例")
3、筛选用例-建议按层级、冒烟等设置-@pytest.mark.smoke-'-m', 'smoke or login'
步骤一:用例侧标记smoke 和login,可以标记一个标签,也可以多个标签
@pytest.mark.smoke @pytest.mark.level_high def test_fixture41(self, init_case): pass
步骤二:便签在pytest.ini文件中定义
[pytest] markers = smoke pay login level_high
步骤三:运行文件
# 示例1 pytest.main(['--alluredir=report', '-m‘,’ login']) # 示例2 pytest.main(['--alluredir=report', '-m', 'smoke or login'])

浙公网安备 33010602011771号