我正在与pytest-叉(pytest -r sxX -n auto --cache-clear --max-worker-restart=4 --forked)并行执行python单元测试,并且有一个测试用例需要相当长的时间才能运行,而另一个测试用例运行者/CPU核心处于空闲状态(因为可能只剩下这一个测试用例需要完成)。
我想知道是哪个测试用例(可能在开始时运行它,或者禁用它)。注意,这不是寻找运行时间最长的测试用例的问题,因为这可能不是罪魁祸首。我正在显式地寻找某种方式来知道哪个测试用例分配给了pytest运行程序Python流程。调用ps会显示类似于python -u -c import sys; exec(eval(sys.stdin.readline())) (对于机器中同样多的CPU核心)的东西,这并不特别有用。
是否有一种方法可以将测试用例的名称设置为流程并使用系统工具(如ps )检索它?我正在Linux上运行这些测试用例,以防与此相关。
发布于 2022-08-04 23:38:26
由于pytest-dist 2.4,有一个解决方案来显示哪个测试用例正在运行。它需要一个额外的包setproctitle。
从系统环境中识别工作人员的
2.4版新版本
如果安装了setproctitle包,pytest-xdist将使用它更新其工作人员上的进程标题(命令行),以显示其当前状态。使用的标题是pytest-xdist,运行file.py/node::id和pytest-xdist空闲,在标准工具(如ps )中可以看到,在Linux、Mac和BSD系统上也可以看到。对于Windows,请遵循setproctitle关于Process工具的指针。
这纯粹是作为UX增强的目的,例如跟踪长期运行或CPU密集测试的问题。更改标题时的错误将被忽略。请尽量不要依赖外部脚本中的标题格式或标题更改。
https://pypi.org/project/pytest-xdist/#identifying-workers-from-the-system-environmentbas
https://stackoverflow.com/questions/72961025
复制相似问题