• pytest之fixture


    pytest使用规则:

    1.文件开头用test_开头

    2.测试类用Test开头

    3.测试函数以test_开头

    4.断言用assert

    固定装置:fixture(固定代码)

    1.做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等

    2.测试用例前置条件可以用fixture实现

    3.像unitest一样能使用step,teardown

    4.fixturn可以实现unittest不能实现的功能,如unittest中的测试用例和测试用例无法传递参数和数据,但fixturn可以

    详解:

    一、又独立命名,通过声明它们从函数模块类整个项目使用来激活

    二、模块化方式实现,每个fixture可互相调用

    三、fixture可以从简单的单元扩展到复杂功能,允许配置跟组件。对fiture和测试用例参数化,或者跨函数function类class模moudle测试会话session

    在fixture中断言失败error    在用例失败是fail

    1.当作参数传入:

    @python.fixture()

    当其他函数调用被fixture标记的函数,直接当参数传入,用fixture()标记的函数不要用test_开头

    用例fixture没有reture,返回值是none

    例子:

    @pytest.fixture

    def login():
      p=12345

      u=test

      return(P)

    使用:

    def test_login(login)

      asser p!=-1,u!=-1

    2.使用@pytest.mark.usefixtures('fixture),下面类中的函数自动带入标记的函数入参

    使用:

    @pytest.fixture

    def login():
      p=12345

      u=test

      return(P)

    @pytest.mark.usefixtures(login)

    class Test_login():

      def test_login():

        assert p!=1

      def test_login2():

        assert u!=1

    3.autouse参数,可以设置生效范围

    @python.fixture(scope="调用范围“,autouse=Ture). [class:每个类运行一次,用例运行前调用一次;session:多.py文件调用;function:每个函数方法运行一次;moudle:每个模块运行一次)

    例子:

    @python.fixture() 不写范围默认为function

    def psw():
      p=12345

      u=test

      return(p)

    def test_login(psw):

      psw=psw

      assert psw==123456

    @python.fixture(scope='class') 如果class里有很多用例,都调用fixture,那么此fixture在该class里所有用例开始前执行一次,但里面的值可一直使用

    @python.fixture(scope='modle') 在模块里的所有用例开始前运行一次,里面的值可用

    @python.fixture(scope='session')   session级别是可以跨多个.py文件模块调用的,如果有多个py文件调用且需调用一次,可以设置为scope=session并写到conftest.py下

    conftest.py文件名称固定,pytest会自动识别该文件,放工程根目录,就可以全局调用了,如放到其package包下,那只在该package内有效,可以在两个文件内直接调用

    多个fixture直接相互作用

    1.使用多个fixture,可以返回列表,数组,字典

    @pytest.fixture()

    def login():

      u=test

      p=123456

      return(u,p)

    def test_login(login):

      u=login[u]

      p=login[p]

    2.可设置多个fixture

    @pytest.fixture()

    def psw():

      p=123456

      return(p)

    def user():

      u=test

      return(u)

    def test_login(user,psw):

      u=user

      p=psw

      asser user and psw !=-1

    3.fixture 与fixture相互调用

    @pytest.fixture()

    def first():

      u=user

      return u

    @pytest.fixture()

    def psw(first):

      u=first

      p=123456

      return(u,p)

    def test_login(psw):

      u=psw[0]

      p=psw[1]

      asser u!=-1

  • 相关阅读:
    OAuth2.0 基础概述
    Ubuntu安装Gogs服务
    ASP.NET WebAPI 生成帮助文档与使用Swagger服务测试
    ASP.NET MVC 中的路由
    升级Ghost
    搭建Golang开发环境
    TDD并不是看上去的那么美
    .NET Framework 源码查看与调试
    在 ASP.NET MVC 中使用异步控制器
    SpringMVC+FreeMarker+Mybatis 整合
  • 原文地址:https://www.cnblogs.com/zhifeiji822/p/16118436.html
Copyright © 2020-2023  润新知