200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > pytest文档25-conftest.py作用范围

pytest文档25-conftest.py作用范围

时间:2019-03-05 01:56:46

相关推荐

pytest文档25-conftest.py作用范围

前言

一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用。

在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目录生效。

conftest层级关系

在web_conf_py项目工程下建两个子项目baidu、blog,并且每个目录下都放一个conftest.py和__init__.py(python的每个package必须要有__init__.py)

web_conf_py是工程名称├─baidu│ │ conftest.py│ │ test_1_baidu.py│ │ __init__.py│ │├─blog│ │ conftest.py│ │ test_2_blog.py│ │ __init__.py│ │ conftest.py│ __init__.py

案例分析

web_conf_py工程下conftest.py文件代码案例

# web_conf_py/conftest.pyimport pytest@pytest.fixture(scope="session")def start():print("\n打开首页")

baidu目录下conftest.py和test_1_baidu.py

# web_conf_py/baidu/conftest.pyimport pytest@pytest.fixture(scope="session")def open_baidu():print("打开百度页面_session")# web_conf_py/baidu/test_1_baidu.pyimport pytestdef test_01(start, open_baidu):print("测试用例test_01")assert 1def test_02(start, open_baidu):print("测试用例test_02")assert 1if __name__ == "__main__":pytest.main(["-s", "test_1_baidu.py"])

运行test_1_baidu.py结果可以看出,start和open_baidu是session级别的,只运行一次

============================= test session starts =============================platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0rootdir: E:\YOYO\web_conf_py\baidu, inifile:plugins: metadata-1.7.0, html-1.19.0collected 2 itemstest_1_baidu.py 打开首页打开百度页面_session测试用例test_01.测试用例test_02.========================== 2 passed in 0.01 seconds ===========================

blog目录下conftest.py和test_2_blog.py代码

# web_conf_py/blog/conftest.pyimport pytest@pytest.fixture(scope="function")def open_blog():print("打开blog页面_function")# web_conf_py/blog/test_2_blog.pyimport pytestdef test_03(start, open_blog):print("测试用例test_03")assert 1def test_04(start, open_blog):print("测试用例test_04")assert 1def test_05(start, open_baidu):'''跨模块调用baidu模块下的conftest'''print("测试用例test_05,跨模块调用baidu")assert 1if __name__ == "__main__":pytest.main(["-s", "test_2_blog.py"])

运行结果可以看出,start起到全局作用,blog目录下的open_blog是function级别,每个用例调用一次。

test_05(start, open_baidu)用例不能跨模块调用baidu模块下的open_baidu,所以test_05用例会运行失败

============================= test session starts =============================platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0rootdir: E:\YOYO\web_conf_py\blog, inifile:plugins: metadata-1.7.0, html-1.19.0collected 3 itemstest_2_blog.py 打开首页打开blog页面_function测试用例test_03.打开blog页面_function测试用例test_04.E=================================== ERRORS ====================================__________________________ ERROR at setup of test_05 __________________________file E:\YOYO\web_conf_py\blog\test_2_blog.py, line 11def test_05(start, open_baidu):E fixture 'open_baidu' not found> available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, metadata, monkeypatch, open_blog, pytestconfig, record_property, record_xml_attribute, record_xml_property, recwarn, start, tmpdir, tmpdir_factory> use 'pytest --fixtures [testpath]' for help on them.E:\YOYO\web_conf_py\blog\test_2_blog.py:11====================== 2 passed, 1 error in 0.02 seconds ======================

作者:上海-悠悠 QQ交流群:874033608

也可以关注下我的个人公众号:yoyoketang

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。