• pytest框架--@pytest.fixture(scpoe=‘xxx')装饰器


    pytest是一个非常成熟的全功能的Python测试框架

    用例设计原则 谨记:当我们使用pytest框架写case的时候,一定要拿它的命令规范去case,这样框架才能识别到哪些case需要执行,哪些不需要执行
    文件名以test_.py文件和_test.py
    以Test开头的类
    以test_开头的函数
    以test_开头的方法

    运行方式
    可以通过pycharm里的终端命令,也可以pytest.main()运行(主推)

    @pytest.fixture() 即测试用例执行的环境准备和清理,相当于unittest的setup()和teardown()

    上面装饰器,下面函数名
    定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要以test开头,跟用例区分开。
    fixture是可以return返回值得,没有返回值默认为None,返回值可以在yield里被调用:yield 返回值。用例调用fixture的返回值,直接就是把fixture标记的函数名称当做变量名称传进去。

    那么在一个fixture 内部如何区分环境准备、环境清理呢
    环境清理没有专门的装饰器,还是在fixture装饰器函数内使用yield 关键字
    yield 关键字以后得代码,就是环境清理的代码,即在测试用例执行完成之后会执行的代码

    fixture的作用范围
    fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function
    -function:每一个函数或方法都会调用(默认就是function)
    -class:每一个类调用一次,一个类中可以有多个方法
    -module:每一个.py文件调用一次,该文件内又有多个function和class
    -session:是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module

    conftest.py配置
    应用场景:上面一个案例是在同一个.py文件中,多个用例调用一个登陆功能,如果有多个.py的文件都需要调用这个登陆功能(fixtrue函数)的话,那就不能把登陆(fixtrue)写到用例里面去了。
    此时应该要有一个配置文件,单独管理一些预置的操作场景,pytest里面默认读取conftest.py里面的配置

    conftest.py配置需要注意以下点:
    conftest.py配置脚本名称是固定的,不能改名称
    conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
    不需要import导入 conftest.py,pytest用例会自动查找

    test_1.py
    import pytest
    class Test_A:
    @pytest.fixture(scope='class')
    def c(self):
    print('ccc')
    yield
    print('ggg')

    def test_b(self,c,a):
        print('bbb')
    

    conftest.py
    import pytest
    @pytest.fixture()
    def a():
    print('aaa')
    yield
    print('hhh')

  • 相关阅读:
    java中equals与hashCode的重写问题
    关于java的二维码的生成与解析
    bootstrap的时间控件使用(双日历)
    Mysql表,列,库的增删查改
    关于js重名方法的先后调用问题
    javascript的比较运算符
    javascript的运算符
    JavaScript的数据类型
    javascript的基本语法
    MAP集合
  • 原文地址:https://www.cnblogs.com/yzwdcjs/p/12560600.html
Copyright © 2020-2023  润新知