Pytest Fixture详解

本文详细介绍了Pytest中的Fixture,包括其作为测试用例前后置操作的用途、用法、异常处理、多fixture使用、fixture互相调用以及五个关键参数:name、scope、autouse、params、ids的详解。通过实例展示了Fixture在自动化测试中的重要作用,如在登录操作、参数化和作用域控制等方面的应用。

 前言

  在做自动化的过程中,编写用例时候需要用到用例的前置和用例的后置,其中pytest中有setup_class和teardown_class可以帮助我们完成这些,但是不够完善而且灵活性不够强。举个简单的例子,一个calss中有3条用例,其中2条需要登录,1条不需要登录,这个时候如果在用setup和teardown来做就有点不方便。这个时候就引入了新的知识点fixture。

Fixture简单介绍

  fixture属于pytest中的一个方法。fixture可以用作测试用例的前置和后置操作,其中fixture命令规范没有像setup和teardown固定格式。可以随意命名。控制fixture的前置和后置操作是通过yield关键字进行来区分的代码在yield前面的属于前置操作,代码在yield后面的属于后置操作。并且fixture也没有强烈的要求必须要前后置同时存在,可以只存在前置也可以只存在后置。fixture如果有后置内容,无论遇到什么问题,都会进行执行后置的代码。

return和yeild的区别: 都是表示返回值的意思,但是return的后面不能有代码,yeild很后面可以有代码

yield语句之前的就会在测试用例之前使用,yield之后的语句就会在测试用例执行完成之后再执行。

常见的应用场景:

  1. @pytest.fixture可以用在selenium中测试用例执行前后打开、关闭浏览器的操作; yield返回driver对象去操作浏览器;
  2. @pytest.fixture可以用在接口自动化测试中操作登录,yield返回token;

fixture中一共有5个参数分别是:scope,params,autouse,ids,name

fixture使用方法

  前面已经介绍了fixture是干什么的,但是具体的用法没有说,先介绍下具体用法,这里通过将登录操作写在一个函数中。然后通过装饰器的方法进行使其变成fixture。那条用例需要用到对应的前置和后置操作的时,直接将fixture的名称通过传参的形式放到用例中。

一个class中存在3条用例,其中2条需要登录,1条不需要登录。运营fixture进行完成前后置操作。

import pytest
@pytest.fixture()
def login():
    print("log In")
    yield "Token:xxxxxxxxxxxxxxxxx" #yield之前的内容是setup的相关内容,之后的内容是teardown的操作
    print("Log out")

class TestFixture:

    def test_case001(self,login):
        assert 1==1
        
      def test_case002(self):
        assert 1==1

    def 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值