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'])
posted @ 2022-03-27 22:48  依羽杉  阅读(48)  评论(0)    收藏  举报