首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytest中conftest.py共享fixture(五)

Pytest中conftest.py共享fixture(五)

作者头像
无涯WuYa
发布2019-09-25 10:31:32
5500
发布2019-09-25 10:31:32
举报

有一点首先需要确认的的是,pytest中的fixture是pytest用于将测试前后进行预备,清理工作的代码分离出核心测试逻辑的一种机制。但是我们更加希望的是在一个测试套件中,能够共享fixture的机制,这样所一个测试套件里面的所有测试点都能够共同使用,和我在早期介绍的分离测试固件的思想有点雷同。在pytest中通过conftest.py来共享fixture,如果希望多个测试文件共同使用一个fixture时候,可以在该目录下创建conftest.py文件,但是切记该文件绝对不能倒入使用,这点一定要注意,创建conftest.py文件后,把需要的fixture加入到里面,就可以使用了。先来一个简单的案例,在一个包中,有三个测试模块,每个测试点都显示开始前执行和结束后执行,也就是说,每个测试点执行的时候,先打印测试开始,然后执行测试点,然后最后打印测试结束,见案例代码:

见conftest.py的源码:

#!/usr/bin/python3
#coding:utf-8
import pytest

@pytest.fixture(autouse=True)
def wuya():
    print('开始测试')
    yield
    print('结束测试')

执行模块test_001.py 或者 test_002.py的测试代码,见执行后的结果信息:

cachedir: .pytest_cache
rootdir: /Applications/code/stack/study/xunit/conftest01, inifile:
plugins: allure-adaptor-1.7.10
collected 2 items

test_001.py::test_login_001
        SETUP    F wuya
        test_001.py::test_login_001 (fixtures used: wuya)PASSED
        TEARDOWN F wuya
test_002.py::test_logout_001
        SETUP    F wuya
        test_002.py::test_logout_001 (fixtures used: wuya)PASSED
        TEARDOWN F wuya

回溯过程使用到的命令为:pytest --setup-show,如上结果信息就是回溯的过程。

fixture也可以传递测试数据,那么也可以写到conftest.py的文件中,还是看一个案例,见conftest.py的最新源码:

#!/usr/bin/python3
#coding:utf-8
import pytest

@pytest.fixture(autouse=True)
def wuya():
    print('开始测试')
    yield
    print('结束测试')

@pytest.fixture()
def login():
    return 'adfghjk34567dsfg'

测试代码见如下:

#!/usr/bin/python3
#coding:utf-8
import pytest


def test_login(login):
    if login=='adfghjk34567dsfg':
        assert True
    else:
        assert  False

执行如上的测试代码,见执行后的结果信息:

platform darwin -- Python 3.7.4, pytest-4.0.2, py-1.8.0, pluggy-0.12.0
rootdir: /Applications/code/stack/study/xunit/conftest01, inifile:
plugins: allure-adaptor-1.7.10
collected 3 items / 2 deselected

test_login.py
        SETUP    F wuya
        SETUP    F login
        test_login.py::test_login (fixtures used: login, wuya).
        TEARDOWN F login
        TEARDOWN F wuya

依据如上的测试代码,可以看出在一个conftest.py中,可以编写多个共享fixture的代码。关于cionftest.py共享fixture的几个注意事项,再次总结下,具体如下:

1、conftest.py文件绝对不能当平常的模块来倒入,是绝对不能

2、conftest.py很多时候是被当作pytest一个本地插件库

3、可以 把一个目录下的conftest.py看成是一个供该目录下所有测试用例使用的fixture仓库

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档