pytest--环境初始化与数据清除

fixture的用途

pytest fixture 与setup,teardown功能一样,但比之更加灵活,完全可以代替setup,teardown

1.做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现

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

3.支持经典的xunit fixture ,像unittest使用的setup和teardown

4.fixture可以实现unittest不能实现的功能,比如unittest中的测试用例和测试用例之间是无法传递参数和数据的,但是fixture却可以解决这个问题。

fixture的定义

fixture通过@pytest.fixture()装饰器装饰一个函数,那么这个函数就是一个fixture

import pytest


@pytest.fixture()
def login():
    print('登陆方法')
    yield   #激活fixture teardown方法
    print('teardown')

# 测试用例之前,先执行login方法
def test_case1(login):
    print('case1')

def test_case2():
    print('case2')

def test_case3():
    print('case3')

运行结果如下:

test_login.py::test_case2 
test_login.py::test_case3 

============================== 3 passed in 0.02s ===============================

Process finished with exit code 0
登陆方法
PASSED                                         [ 33%]case1
teardown
PASSED                                         [ 66%]case2
PASSED                                         [100%]case3

fixture源码详解

fixture(scope='function',params=None,autouse=False,ids=None,name=None):

scope:有四个级别参数"function"(默认),“class”,“module”,“session”。

**params:**一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它。

**autouse:**如果True,则为所有测试激活fixture func可以看到它。如果为False则显示需要参考来激活fixture。

**ids:**每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的一部分。如果没有提供ID它们将从params自动生成。

name:fixture的名称。这默认为装饰函数的名称。如果fixture在定义它的统一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽,解决这个问题的一种方法时将装饰函数命。

fixture的作用范围(scope)

fixture里面有个scope参数可以控制fixture的作用范围:session > module > class > function

  • function 每一个函数或方法都会调用,默认为function
  • class 每一个类调用一次,一个类可以有多个方法
  • module,每一个.py文件调用一次,该文件内又有多个function和class
  • session 是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module

1、scope='function’


import pytest

@pytest.fixture()   #默认为scope='function'
def login():
    print('登陆方法')
    yield ['username','passwd']  #激活fixture teardown方法
    print('teardown')

# 测试用例之前,先执行login方法
def test_case1(login):
    print(f'case1 login={login}')

def test_case2(login):
    print('case2')

def test_case3(login):
    print('case3')

运行结果如下:

============================= test session starts ==============================
platform darwin -- Python 3.6.4, pytest-6.0.2
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值