zoukankan      html  css  js  c++  java
  • 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')

  • 相关阅读:
    将戴尔台式机的系统刷成Linux Centos7
    如何在Maven构建的Java项目中使用log4j
    mybatis-generator逆向工程自动生成mapper
    Win10改变系统主题颜色,降低对眼睛的刺激
    09、SpringBoot 整合 jdbcTemplate、Mybatis
    08、SpringBoot配置拦截器
    navicat快捷键
    DevOps:从理念到实施
    活到老学到老啊技术人
    Linux上安装java+tomcat+mysql运行环境
  • 原文地址:https://www.cnblogs.com/yzwdcjs/p/12560600.html
Copyright © 2011-2022 走看看