MK.*_*MK. 7 python nose nosetests
我有一个包含大量.py文件的目录(比如test_1.py,test_2.py等).每个文件都正确编写以便与鼻子一起使用.因此,当我运行nosetests脚本时,它会在所有.py文件中找到所有测试并执行它们.
我现在想并行化它们,以便将所有.py文件中的所有测试都视为可并行化并委派给工作进程.
似乎默认情况下,执行:
nosetests --processes=2
Run Code Online (Sandbox Code Playgroud)
根本没有引入并行性,所有.py文件的所有测试仍然只在一个进程中运行
我尝试在每个.py文件中放置一个_multiprocess_can_split_ = True,但这没什么区别
感谢您的任何投入!
Rod*_*Rod 12
似乎鼻子,实际上是多进程插件,将使测试并行运行.需要注意的是,它的工作方式最终不会在多个进程上执行测试.该插件创建一个测试队列,生成多个进程,然后每个进程同时使用该队列.每个进程都没有测试调度,因此如果您的测试执行速度非常快,它们最终可能会在同一个进程中执行.
以下示例显示此beaviour:
文件test1.py
import os
import unittest
class testProcess2(unittest.TestCase):
def test_Dummy2(self):
self.assertEqual(0, os.getpid())
Run Code Online (Sandbox Code Playgroud)
文件test2.py
import os
import unittest
class testProcess2(unittest.TestCase):
def test_Dummy2(self):
self.assertEqual(0, os.getpid())
Run Code Online (Sandbox Code Playgroud)
运行nosetests --processes = 2输出(注意相同的进程ID)
FF
======================================================================
FAIL: test_Dummy2 (test1.testProcess2)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\temp\test1.py", line 7, in test_Dummy2
self.assertEqual(0, os.getpid())
AssertionError: 0 != 94048
======================================================================
FAIL: test_Dummy1 (test2.testProcess1)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\temp\test2.py", line 8, in test_Dummy1
self.assertEqual(0, os.getpid())
AssertionError: 0 != 94048
----------------------------------------------------------------------
Ran 2 tests in 0.579s
FAILED (failures=2)
Run Code Online (Sandbox Code Playgroud)
现在,如果我们在其中一个测试中添加一个睡眠
import os
import unittest
import time
class testProcess2(unittest.TestCase):
def test_Dummy2(self):
time.sleep(1)
self.assertEqual(0, os.getpid())
Run Code Online (Sandbox Code Playgroud)
我们得到(注意不同的进程ID)
FF
======================================================================
FAIL: test_Dummy1 (test2.testProcess1)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\temp\test2.py", line 8, in test_Dummy1
self.assertEqual(0, os.getpid())
AssertionError: 0 != 80404
======================================================================
FAIL: test_Dummy2 (test1.testProcess2)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\temp\test1.py", line 10, in test_Dummy2
self.assertEqual(0, os.getpid())
AssertionError: 0 != 92744
----------------------------------------------------------------------
Ran 2 tests in 1.422s
FAILED (failures=2)
Run Code Online (Sandbox Code Playgroud)