pytest接口自动化测试框架 | conftest.py和@pytest.fixture()结合

视频来源:B站《冒死上传!pytest接口自动化测试框架(基础理论到项目实战及二次开发)教学视频【软件测试】》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:pytest接口自动化测试框架 | 汇总_COCOgsta的博客-CSDN博客


用例1需要先登录,用例2不需要登录,用例3需要先登录,在有不同的用例前置条件是不一样的

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

  1. conftest.py配置脚本名称是固定的,不能改名称,是单独存放的一个配置文件。
  1. 原则上,conftest.py与运行的用例要在同一个package下,并且有init.py文件,可以在不同的py文件中使用同一个fixture函数
  1. 不需要import导入conftest.py,pytest用例会自动查找
  1. 一般来说,不同的模块下都有一个conftest.py文件。全局的有一个conftest.py

conftest.py

import pytest

# 作用域
@pytest.fixture(scope='class', autouse=True)

def login():
    print('登录系统')
    yield
    print('退出系统')

py1_test.py

import pytest

# conftest.py
# 1.conftest在用例的同目录下
# 2.conftest名字不能改变
# 3.不需要导入,自动查找fixture

class TestCase1:
    def test_03(self):
        print('测试用例三')


    def test_04(self):
        print('测试用例四')

运行结果:

/Users/guoliang/SynologyDrive/SourceCode/pytest3/venv/bin/python /Users/guoliang/SynologyDrive/SourceCode/pytest3/all.py
============================= test session starts ==============================
platform darwin -- Python 3.7.6, pytest-7.1.2, pluggy-1.0.0 -- /Users/guoliang/SynologyDrive/SourceCode/pytest3/venv/bin/python
cachedir: .pytest_cache
metadata: {'Python': '3.7.6', 'Platform': 'Darwin-17.7.0-x86_64-i386-64bit', 'Packages': {'pytest': '7.1.2', 'py': '1.11.0', 'pluggy': '1.0.0'}, 'Plugins': {'xdist': '2.5.0', 'forked': '1.4.0', 'metadata': '2.0.1', 'allure-pytest': '2.9.45', 'rerunfailures': '10.2', 'html': '3.1.1', 'ordering': '0.6'}}
rootdir: /Users/guoliang/SynologyDrive/SourceCode/pytest3, configfile: pytest.ini, testpaths: ./testcase
plugins: xdist-2.5.0, forked-1.4.0, metadata-2.0.1, allure-pytest-2.9.45, rerunfailures-10.2, html-3.1.1, ordering-0.6
collecting ... collected 2 items

testcase/py1_test.py::TestCase1::test_03 登录系统
测试用例三
PASSED
testcase/py1_test.py::TestCase1::test_04 测试用例四
PASSED退出系统


============================== 2 passed in 0.02s ===============================

Process finished with exit code 0

全局有conftest.py,具体包内也有conftest.py

/conftest.py

import pytest

# 作用域
@pytest.fixture(scope='session', autouse=True)

def login():
    print('登录系统')
    yield
    print('退出系统')

# 执行顺序
# 登录系统 -商品用例三 商品用例四 - 退出系统
# 登录系统 -用户用例三 用户用例四 - 退出系统

/testcase/pro/conftest.py

import pytest

@pytest.fixture(scope='class', autouse=True)

def login1():
    print('进入商品管理')
    yield
    print('退出商品管理')

/testcase/user/conftest.py

import pytest

@pytest.fixture(scope='class', autouse=True)

def login2():
    print('进入用户管理')
    yield
    print('退出用户管理')

/testcase/pro/pro_test.py

class TestCase2:
    def test_3(self):
        print('商品用例三')


    def test_4(self):
        print('商品用例四')

/testcase/user/user_test.py

# conftest.py
# 1.conftest在用例的同目录下,
# 先登录 进入到用户管理--用户用例 退出用户管理 退出登录
# 先登录 进入到商品管理--商品用例 退出商品管理 退出登录

# 先登录 进入到用户管理--用户用例 退出用户管理 进入到商品管理--商品用例 退出商品管理 退出登录
# 作用域
# 2.conftest名字不能改变
# 3.不需要导入,自动查找fixture


class TestCase1:
    def test_03(self):
        print('用户用例三')


    def test_04(self):
        print('用户用例四')

运行结果:

/Users/guoliang/SynologyDrive/SourceCode/pytest3/venv/bin/python /Users/guoliang/SynologyDrive/SourceCode/pytest3/all.py
============================= test session starts ==============================
platform darwin -- Python 3.7.6, pytest-7.1.2, pluggy-1.0.0 -- /Users/guoliang/SynologyDrive/SourceCode/pytest3/venv/bin/python
cachedir: .pytest_cache
metadata: {'Python': '3.7.6', 'Platform': 'Darwin-17.7.0-x86_64-i386-64bit', 'Packages': {'pytest': '7.1.2', 'py': '1.11.0', 'pluggy': '1.0.0'}, 'Plugins': {'xdist': '2.5.0', 'forked': '1.4.0', 'metadata': '2.0.1', 'allure-pytest': '2.9.45', 'rerunfailures': '10.2', 'html': '3.1.1', 'ordering': '0.6'}}
rootdir: /Users/guoliang/SynologyDrive/SourceCode/pytest3, configfile: pytest.ini, testpaths: ./testcase
plugins: xdist-2.5.0, forked-1.4.0, metadata-2.0.1, allure-pytest-2.9.45, rerunfailures-10.2, html-3.1.1, ordering-0.6
collecting ... collected 4 items

testcase/pro/pro_test.py::TestCase2::test_3 登录系统
进入商品管理
商品用例三
PASSED
testcase/pro/pro_test.py::TestCase2::test_4 商品用例四
PASSED退出商品管理

testcase/user/user_test.py::TestCase1::test_03 进入用户管理
用户用例三
PASSED
testcase/user/user_test.py::TestCase1::test_04 用户用例四
PASSED退出用户管理
退出系统


============================== 4 passed in 0.05s ===============================

Process finished with exit code 0
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值