Pytest_fixture装饰器、介绍、fixtrue()_参数化演示

2022-10-28 09:47:51

1、fixture 介绍

1、pytest 提供的 fixture 实现 unittest 中 setup/teardown 功能,可以在每次执行case之前初始化数据。2、区别:fixture 可以只在执行某几个特定case 前运行,只需要在运行case 前调用即可。比setup/teardown 使用起来更灵活。

2、fixture scope 作用范围

先看下 fixture 函数的定义:
   def fixture(scope="function",params=None,autouse=False,ids=None,name=None):''''''
       :arg scope: 可选四组参数:function(默认)、calss、module、package/session
       :arg params: 一个可选的参数列表,它将导致多个参数调用fixture函数和所有测试使用
       它。
       :arg autouse: 如果为True,则fixture func将为所有测试激活可以看到它。如果为
       False(默认值),则需要显式激活fixture。
       :arg ids: 每个参数对应的字符串id列表,因此它们是测试id的一部分。如果没有提供
       id,它们将从参数中自动生成。
       :arg name: fixture的名称。 这默认为装饰函数的名称。 如果fixture在定义它的同
       一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽; 解决这个问题的一种方法是将装饰函数
       命名 “fixture_<fixturename>”然后使用”@ pytest.fixture(name='<fixturename>')”。''''''

3、重点看下 scope 四组参数的意义

@pytest_allure报告.fixture()# 此装饰器相当于 setup
    @pytest_allure报告.fixture(scope="function")# 此装饰器相当于 setup_function
    @pytest_allure报告.fixture(scope="class")# 此装饰器相当于 setup_class
    @pytest_allure报告.fixture(scope="module")# 此装饰器相当于 setup_module
    @pytest_allure报告.fixture(scope="method")# 此装饰器相当于 setup_method
    @pytest_allure报告.fixture(scope="session")# 此装饰器相当于 setup_session

    function:每个方法(函数)都会执行一次。
    class:每个类都会执行一次。类中有多个方法调用,只在第一个方法调用时执行。
    module:每一个.py文件调用一次,该文件内又有多个function和class。
    package/session:多个文件调用一次,可以跨.py文件调用,每个.py文件就是module。
	
	注:session级别,此时将fixture的内容写道conftest.py文件中,所有目录下的文件只需调用一次。
	注:session级别,此时将fixture的内容写道 conftest.py文件中,所有目录下的文件只需调用一次。
    博客:https://blog.csdn.net/weixin_44801980/article/details/125482233

5、fixtrue_参数化演示

import pytestfrom day4_Boss_V1_3.auto_boss_v4.config import*

@pytest.fixture(scope='module',params=[(4723, xiaomi_caps),(4727, huawei_caps)])  # 作用域默认是Testdefbefore_test_module(request):"""
    初始化函数:param request::return:"""
    port= request.param[0]  # 取元组的第一个元素作为参数
    device= request.param[1]print(f'在{device}启动被测app')print(f'连接appium服务{port}')yield  # 后面写清除动作print('关闭被测app')print(f'断开appium服务')defafter_test_module():"""
    清除函数:return:"""print('关闭被测app')print(f'断开appium服务')# 测试用例的参数化
@pytest.mark.usefixtures('before_test_module')  # 初始化函数
@pytest.mark.parametrize('psw',['123', '456'])deftest_app(psw):print('测试boss app')print(f'登录测试账号{psw}')if __name__== '__main__':
    pytest.main(['l_pytest_fixtrue_参数化演示.py', '-s'])

6、conftest.py 配置文件的作用

7、fixtrue_返回值、单个用例调用多个函数

8、Pytest_fixture装饰器、调用fixture的三种方法

  • 作者:卢同学.
  • 原文链接:https://blog.csdn.net/weixin_44801980/article/details/117886614
    更新时间:2022-10-28 09:47:51