ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pytest测试框架系列 - Pytest 用例之间相互依赖你会处理吗?

2021-07-10 23:53:19  阅读:188  来源: 互联网

标签:dependency pytest mark 用例 add Pytest test


## 前言 场景:存在一个增删改查相关的操作功能,当增加操作用例失败时,删除、修改、查询操作不执行,这种场景该怎么来处理呢? Pytest 框架提供了一个`pytest-dependency` 插件帮我们做了这件事情,我们只需要简单的使用即可。 ## pytest-dependency 详解 (建议掌握程度:☆☆☆☆) ### 安装 - 在命令行窗口输入: `pip install pytest-dependency` - 查看安装版本:`pip show pytest-dependency` ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=2021070923443944.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA0NTQxMTc=,size_16,color_FFFFFF,t_70) ### 使用 使用方法 : 用 `@pytest.mark.dependency()`对所依赖的用例进行标记,使用`@pytest.mark.dependency(depends=["测试用例名称"])` 引用依赖,测试用例名称可以是多个 说明:当依赖的用例执行失败,被依赖的用例直接跳过 **依赖用例失败示例:** ```python # !/usr/bin/python3 # _*_coding:utf-8 _*_ """" # @Time  :2021/7/9 23:54 # @Author  : king # @File   :test_dependency.py # @Software :PyCharm # @blog :https://blog.csdn.net/u010454117 # @WeChat Official Account: 【测试之路笔记】 """ import pytest @pytest.mark.dependency() def test_add(): print("我是 test_add 用例") assert False @pytest.mark.dependency(depends=["test_add"]) def test_update(): print("我是 test_update 用例") assert False @pytest.mark.dependency(depends=["test_add"]) def test_delete(): print("我是 test_delete 用例") assert True @pytest.mark.dependency(depends=["test_add"]) def test_select(): print("我是 test_select 用例") assert True if __name__ == '__main__': pytest.main(["-s"]) ``` **执行结果:** ```python Testing started at 23:59 ... F:\pytest_demo\Scripts\python.exe "D:\JetBrains\PyCharm 2019.2.5\helpers\pycharm\_jb_pytest_runner.py" --path E:/pytest_demo/class_05/test_dependency.py Launching pytest with arguments E:/pytest_demo/class_05/test_dependency.py in E:\pytest_demo\class_05 ============================= test session starts ============================= platform win32 -- Python 3.7.0, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 -- F:\pytest_demo\Scripts\python.exe cachedir: .pytest_cache rootdir: E:\pytest_demo\class_05 plugins: assume-2.4.3, dependency-0.5.1, ordering-0.6, rerunfailures-10.1 collecting ... collected 4 items test_dependency.py::test_add FAILED [ 25%]我是 test_add 用例 test_dependency.py:13 (test_add) @pytest.mark.dependency() def test_add(): print("我是 test_add 用例") > assert False E assert False test_dependency.py:17: AssertionError test_dependency.py::test_update SKIPPED (test_update depends on test...) [ 50%] Skipped: test_update depends on test_add test_dependency.py::test_delete SKIPPED (test_delete depends on test...) [ 75%] Skipped: test_delete depends on test_add test_dependency.py::test_select SKIPPED (test_select depends on test...) [100%] Skipped: test_select depends on test_add ================================== FAILURES =================================== __________________________________ test_add ___________________________________ @pytest.mark.dependency() def test_add(): print("我是 test_add 用例") > assert False E assert False test_dependency.py:17: AssertionError ---------------------------- Captured stdout call ----------------------------- 我是 test_add 用例 =========================== short test summary info =========================== FAILED test_dependency.py::test_add - assert False ======================== 1 failed, 3 skipped in 0.04s ========================= Process finished with exit code 0 Assertion failed Assertion failed ``` **依赖用例成功示例:** ```python # !/usr/bin/python3 # _*_coding:utf-8 _*_ """" # @Time  :2021/7/9 23:54 # @Author  : king # @File   :test_dependency.py # @Software :PyCharm # @blog :https://blog.csdn.net/u010454117 # @WeChat Official Account: 【测试之路笔记】 """ import pytest @pytest.mark.dependency() def test_add(): print("我是 test_add 用例") assert True @pytest.mark.dependency(depends=["test_add"]) def test_update(): print("我是 test_update 用例") assert False @pytest.mark.dependency(depends=["test_add"]) def test_delete(): print("我是 test_delete 用例") assert True @pytest.mark.dependency(depends=["test_add"]) def test_select(): print("我是 test_select 用例") assert True if __name__ == '__main__': pytest.main(["-s"]) ``` **执行结果:** ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210710000719459.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA0NTQxMTc=,size_16,color_FFFFFF,t_70) **多个依赖用例存在失败示例:** ```python # !/usr/bin/python3 # _*_coding:utf-8 _*_ """" # @Time  :2021/7/9 23:54 # @Author  : king # @File   :test_dependency.py # @Software :PyCharm # @blog :https://blog.csdn.net/u010454117 # @WeChat Official Account: 【测试之路笔记】 """ import pytest @pytest.mark.dependency() def test_add(): print("我是 test_add 用例") assert True @pytest.mark.dependency() def test_update(): print("我是 test_update 用例") assert False @pytest.mark.dependency(depends=["test_add", "test_update"]) def test_delete(): print("我是 test_delete 用例") assert True @pytest.mark.dependency(depends=["test_add"]) def test_select(): print("我是 test_select 用例") assert True if __name__ == '__main__': pytest.main(["-s"]) ``` **执行结果:** ![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210710001123145.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA0NTQxMTc=,size_16,color_FFFFFF,t_70) ## 总结 - 用 `@pytest.mark.dependency()`对所依赖的用例进行标记,使用`@pytest.mark.dependency(depends=["测试用例名称"])` 引用依赖,测试用例名称可以是多个 - 用例多存在多个依赖时,只要存在一个依赖失败,被依赖用例就跳过,所有依赖成功才执行 以上为内容纯属个人理解,如有不足,欢迎各位大神指正,转载请注明出处! >**如果觉得文章不错,欢迎关注微信公众号,微信公众号每天推送相关测试技术文章** 个人微信号:搜索 【测试之路笔记】

标签:dependency,pytest,mark,用例,add,Pytest,test
来源: https://blog.51cto.com/king15800/3034812

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有