pytest的fixture和conftest

解决问题:用例1需要先登录,用例2不需要登录,用例3需要先登录。很显然这就无法用setup和teardown来实现了,这个时候就可以自定义测试用例的预置条件,比setup灵活很多。

1、fixture的使用,以及 scope = function 和 scope = module 的区别

#coding=utf-8
import pytest

@pytest.fixture(scope="function")   # 不带参数 默认scope = function 针对函数有效
def login():
    print("登录成功")


def test1(login):
    print('操作1')
    print("-----------------------------------------------")

def test12():
    print('操作2')
    print("-----------------------------------------------")


def test3(login):
    print('操作3')
print("-----------------------------------------------") if __name__ == '__main__': pytest.main()

运行结果:

# coding=utf-8
import pytest

@pytest.fixture(scope="module")
def login():
    print("登录成功")


def test1(login):
    print('操作1')
    print("-----------------------------------------------")

def test12():
    print('操作2')
    print("-----------------------------------------------")


def test3(login):
    print('操作3')

    print("-----------------------------------------------")


if __name__ == '__main__':
    pytest.main(['-s', "text.fix2.py"])

运行的结果:

区别:scope= module 它只会在第一个用例前执行一次,后面再调用不执行了。

2、conftest.py的配置

解决问题:上面一个案例是在同一个.py文件中,多个用例调用一个登陆功能,如果有多个.py的文件都需要调用这个登陆功能的话,那就不能把登陆写到用例里面去了,需要单独写在配置文件里面

conftest.py配置需要注意以下点:

  • conftest.py配置脚本名称是固定的,不能改名称
  • conftest.py与运行的用例要在同一个pakage下,并且有__init__.py文件
  • 不需要import导入 conftest.py,pytest用例会自动查找
    __init__.py
    
    conftest.py
        # coding:utf-8
        import pytest
    
        @pytest.fixture()
        def login():
            print("登录成功")
    
    test_fix1.py
    
    # coding=utf-8
    import pytest
    
    
    def test4(login):
        print('操作1')
        print("-----------------------------------------------")
    
    def test5():
        print('操作2')
        print("-----------------------------------------------")
    
    
    if __name__ == '__main__':
        pytest.main(['-s',"text.fix1.py"])   #-s参数是为了显示用例的打印信息。 -q参数只显示结果,不显示过程
    
    
    
    text_fix2.py
    
    # coding=utf-8
    import pytest
    
    
    def test1(login):
        print('操作1')
        print("-----------------------------------------------")
    
    def test12():
        print('操作2')
        print("-----------------------------------------------")
    
    
    def test3(login):
        print('操作3')
    
        print("-----------------------------------------------")
    
    
    if __name__ == '__main__':
        pytest.main(['-s', "text.fix2.py"])

    运行结果:

 

转载于:https://www.cnblogs.com/guo2733/p/10521619.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值