pytest分布式执行插件 pytest-xdist 的高级用法

想要使用多个CPU核心来进行测试,可以使用 -n 参数( 或者 --numprocesses)

(使用8个核心来跑测试用例)

|---|---------------|
| 1 | pytest -n 8 |

使用 -n auto 参数可以利用电脑的所有核心来跑测试用例

测试时使用的算法可以根据--dist命令参数定制:

  • --dist load(默认选项):给每个CPU核心随机分配用例,不保证执行顺序。
  • --dist loadscope:对于测试函数,测试按模块分组,对于测试方法,测试按类分组。每组作为一个整体分配给可用的worker。这保证了组中的所有测试都在同一进程中运行。如果的模块级或类级fixtures,这将非常有用。按类分组优先于按模块分组。
  • --dist loadfile: 测试用例按其所在文件分组。每组作为一个整体分配给可用的worker。这保证了文件中的所有测试都在同一个辅助进程中运行。
  • --dist loadgroup: 测试按xdist_group标记分组。每组作为一个整体分配给可用的执行器。这保证了具有相同xdist_ group名称的所有测试都在同一个worker中运行。

|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 | @pytest``.mark.xdist_group(name``=``"group1"``) def test1(): ``pass class TestA: ``@pytest``.mark.xdist_group(``"group1"``) ``def test2(): ``pass``- |

这将确保test1和TestA::test2将在同一个worker中运行。没有xdist_ group标记的测试在--dist=load模式下正常运行。

  • --dist no:正常的pytest执行模式,一次运行一个测试(完全没有分发)。

例子:

项目目录结构

xdist_test.py

|-------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import logging import pytest class TestXdist(``object``): ``@pytest``.mark.xdist_group(``"group1"``) ``def test_one(``self``): ``logging.info(``"1"``) ``assert True ``@pytest``.mark.xdist_group(``"group1"``) ``def test_two(``self``): ``logging.info(``"2"``) ``assert True ``@pytest``.mark.xdist_group(``"group2"``) ``def test_three(``self``): ``logging.info(``"3"``) ``assert True ``@pytest``.mark.xdist_group(``"group2"``) ``def test_four(``self``): ``logging.info(``"4"``) ``assert True |

xdist_dummy_test.py

|-------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import logging import pytest class TestXdist(``object``): ``@pytest``.mark.run(order``=``1``) ``@pytest``.mark.xdist_group(``"group1"``) ``def test_dummy_one(``self``): ``logging.info(``"d1"``) ``assert True ``@pytest``.mark.xdist_group(``"group1"``) ``@pytest``.mark.run(order``=``2``) ``def test_dummy_two(``self``): ``logging.info(``"d2"``) ``assert True ``@pytest``.mark.run(order``=``3``) ``@pytest``.mark.xdist_group(``"group2"``) ``def test_dummy_three(``self``): ``logging.info(``"d3"``) ``assert True ``@pytest``.mark.xdist_group(``"group2"``) ``@pytest``.mark.run(order``=``4``) ``def test_dummy_four(``self``): ``logging.info(``"d4"``) ``assert True |

|-------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | (venv) ➜ pytest pytest ``-``n auto ``-``-``dist loadscope =``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= test session starts ``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= platform darwin ``-``- Python ``3.8``.``9``, pytest``-``7.1``.``2``, pluggy``-``1.0``.``0 rootdir: ``/``Users``/``spock``/``PycharmProjects``/``pytest, configfile: pytest.ini plugins: xdist``-``2.5``.``0``, forked``-``1.4``.``0``, ordering``-``0.6 [gw0] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw1] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw2] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw3] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw4] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw5] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw6] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw7] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] gw0 [``8``] ``/ gw1 [``8``] ``/ gw2 [``8``] ``/ gw3 [``8``] ``/ gw4 [``8``] ``/ gw5 [``8``] ``/ gw6 [``8``] ``/ gw7 [``8``] scheduling tests via LoadScopeScheduling test2``/``xdist_dummy_test.py::TestXdist::test_dummy_one test``/``xdist_test.py::TestXdist::test_one [gw0] [ ``12``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_one [gw1] [ ``25``%``] PASSED test``/``xdist_test.py::TestXdist::test_one test2``/``xdist_dummy_test.py::TestXdist::test_dummy_two test``/``xdist_test.py::TestXdist::test_two [gw1] [ ``37``%``] PASSED test``/``xdist_test.py::TestXdist::test_two test``/``xdist_test.py::TestXdist::test_three [gw0] [ ``50``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_two test2``/``xdist_dummy_test.py::TestXdist::test_dummy_three [gw1] [ ``62``%``] PASSED test``/``xdist_test.py::TestXdist::test_three test``/``xdist_test.py::TestXdist::test_four [gw0] [ ``75``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_three test2``/``xdist_dummy_test.py::TestXdist::test_dummy_four [gw1] [ ``87``%``] PASSED test``/``xdist_test.py::TestXdist::test_four [gw0] [``100``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_four =``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= 8 passed ``in 0.40s =``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= |

|----------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | (venv) ➜ pytest pytest ``-``n auto ``-``-``dist loadfile =``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= test session starts ``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= platform darwin ``-``- Python ``3.8``.``9``, pytest``-``7.1``.``2``, pluggy``-``1.0``.``0 rootdir: ``/``Users``/``spock``/``PycharmProjects``/``pytest, configfile: pytest.ini plugins: xdist``-``2.5``.``0``, forked``-``1.4``.``0``, ordering``-``0.6 [gw0] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw1] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw2] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw3] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw4] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw5] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw6] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw7] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] gw0 [``8``] ``/ gw1 [``8``] ``/ gw2 [``8``] ``/ gw3 [``8``] ``/ gw4 [``8``] ``/ gw5 [``8``] ``/ gw6 [``8``] ``/ gw7 [``8``] scheduling tests via LoadFileScheduling test``/``xdist_test.py::TestXdist::test_one test2``/``xdist_dummy_test.py::TestXdist::test_dummy_one [gw1] [ ``12``%``] PASSED test``/``xdist_test.py::TestXdist::test_one [gw0] [ ``25``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_one test``/``xdist_test.py::TestXdist::test_two test2``/``xdist_dummy_test.py::TestXdist::test_dummy_two [gw1] [ ``37``%``] PASSED test``/``xdist_test.py::TestXdist::test_two [gw0] [ ``50``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_two test2``/``xdist_dummy_test.py::TestXdist::test_dummy_three test``/``xdist_test.py::TestXdist::test_three [gw1] [ ``62``%``] PASSED test``/``xdist_test.py::TestXdist::test_three [gw0] [ ``75``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_three test2``/``xdist_dummy_test.py::TestXdist::test_dummy_four test``/``xdist_test.py::TestXdist::test_four [gw1] [ ``87``%``] PASSED test``/``xdist_test.py::TestXdist::test_four [gw0] [``100``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_four =``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= 8 passed ``in 0.38s =``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= |

|----------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | (venv) ➜ pytest pytest ``-``n auto ``-``-``dist loadgroup =``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= test session starts ``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``=``= platform darwin ``-``- Python ``3.8``.``9``, pytest``-``7.1``.``2``, pluggy``-``1.0``.``0 rootdir: ``/``Users``/``spock``/``PycharmProjects``/``pytest, configfile: pytest.ini plugins: xdist``-``2.5``.``0``, forked``-``1.4``.``0``, ordering``-``0.6 [gw0] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw1] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw2] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw3] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw4] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw5] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw6] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] [gw7] Python ``3.8``.``9 (default, May ``17 2022``, ``12``:``55``:``41``) ``-``- [Clang ``13.1``.``6 (clang``-``1316.0``.``21.2``.``5``)] gw0 [``8``] ``/ gw1 [``8``] ``/ gw2 [``8``] ``/ gw3 [``8``] ``/ gw4 [``8``] ``/ gw5 [``8``] ``/ gw6 [``8``] ``/ gw7 [``8``] scheduling tests via LoadGroupScheduling test2``/``xdist_dummy_test.py::TestXdist::test_dummy_three@group2 test2``/``xdist_dummy_test.py::TestXdist::test_dummy_one@group1 [gw1] [ ``12``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_three@group2 test2``/``xdist_dummy_test.py::TestXdist::test_dummy_four@group2 [gw0] [ ``25``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_one@group1 [gw1] [ ``37``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_four@group2 test2``/``xdist_dummy_test.py::TestXdist::test_dummy_two@group1 [gw0] [ ``50``%``] PASSED test2``/``xdist_dummy_test.py::TestXdist::test_dummy_two@group1 test``/``xdist_test.py::TestXdist::test_three@group2 [gw1] [ ``62``%``] PASSED test``/``xdist_test.py::TestXdist::test_three@group2 test``/``xdist_test.py::TestXdist::test_four@group2 [gw1] [ ``75``%``] PASSED test``/``xdist_test.py::TestXdist::test_four@group2 test``/``xdist_test.py::TestXdist::test_one@group1 [gw0] [ ``87``%``] PASSED test``/``xdist_test.py::TestXdist::test_one@group1 test``/``xdist_test.py::TestXdist::test_two@group1 [gw0] [``100``%``] PASSED test``/``xdist_test.py::TestXdist::test_two@group1 |

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

相关推荐
我是陈泽10 小时前
一行 Python 代码能实现什么丧心病狂的功能?圣诞树源代码
开发语言·python·程序员·编程·python教程·python学习·python教学
欲游山河十万里11 小时前
pytest(三)——参数化@pytest.mark.parametrize
pytest
FIT2CLOUD飞致云16 小时前
测试管理新增视图与高级搜索功能,测试计划支持一键生成缺陷详情,MeterSphere开源持续测试工具v3.3版本发布
开源·接口测试·metersphere·团队协作·持续测试·测试管理
肖哥弹架构1 天前
Spring 全家桶使用教程
java·后端·程序员
未来可期LJ2 天前
【测试-BUG篇】软件测试的BUG知识你了解多少呢?
软件测试·bug
Play_Sai2 天前
【接口测试】任务1:登录接口
软件测试·jmeter·接口测试·技能竞赛·楚怡杯·postaman
Play_Sai3 天前
【接口测试】任务2:商品分类接口
软件测试·接口测试·postman·技能竞赛·楚怡杯·jemter
互联网杂货铺3 天前
2024软件测试面试题大全(含答案+文档)
自动化测试·软件测试·python·功能测试·面试·职场和发展·测试用例
奶茶精Gaaa4 天前
pytest
pytest
IT杨秀才4 天前
自己动手写了一个协程池
后端·程序员·go