并行行事

时间:2018-01-12 09:35:25

标签: windows selenium-webdriver python-behave

我尝试并行运行行为测试。为此,我使用behave-parallel lib和演示项目https://github.com/vishalm/behave_parallel_demo。但操作系统是Windows 10.从Read_me文件开始执行操作。我接下来会Tracebacks

(behave_parallel_demo-master) D:\Python_projects\behave_parallel_demo-master>behave --processes 5 --parallel-element feature
INFO: 0 scenario(s) and 3 feature(s) queued for consideration by 5 workers. Some may be skipped if the -t option was given...
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "c:\python27\Lib\multiprocessing\forking.py", line 381, in main
    self = load(from_parent)
  File "c:\python27\Lib\pickle.py", line 1384, in load
    return Unpickler(file).load()
  File "c:\python27\Lib\pickle.py", line 864, in load
    dispatch[key](self)
  File "c:\python27\Lib\pickle.py", line 1089, in load_newobj
    obj = cls.__new__(cls, *args)
TypeError: __new__() takes exactly 3 arguments (2 given)
Traceback (most recent call last):
  File "c:\python27\Lib\runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "c:\python27\Lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Users\Andriy_Petrenko\Envs\behave_parallel_demo-master\Scripts\behave.exe\__main__.py", line 9, in <module>
  File "c:\users\andriy_petrenko\envs\behave_parallel_demo-master\lib\site-packages\behave\__main__.py", line 111, in main
    failed = runner.run()
  File "c:\users\andriy_petrenko\envs\behave_parallel_demo-master\lib\site-packages\behave\runner.py", line 561, in run
    return self.run_with_paths()
  File "c:\users\andriy_petrenko\envs\behave_parallel_demo-master\lib\site-packages\behave\runner.py", line 583, in run_with_paths
    return self.run_multiproc()
  File "c:\users\andriy_petrenko\envs\behave_parallel_demo-master\lib\site-packages\behave\runner.py", line 690, in run_multiproc
    p.start()
  File "c:\python27\Lib\multiprocessing\process.py", line 130, in start
    self._popen = Popen(self)
  File "c:\python27\Lib\multiprocessing\forking.py", line 280, in __init__
    to_child.close()
IOError: [Errno 22] Invalid argument

我做错了还是这个操作系统问题?看起来有5名工人上升,但第一个问题是TypeError: __new__() takes exactly 3 arguments (2 given)和第二IOError: [Errno 22] Invalid argument

2 个答案:

答案 0 :(得分:0)

我不熟悉Behave,因此不确定您是否正确传递命令行,但此错误意味着其中一个方法需要的参数多于您提供的参数。在这种情况下,它是在cls实例的创建期间:

File "c:\python27\Lib\pickle.py", line 1089, in load_newobj
    obj = cls.__new__(cls, *args)

这看起来像是一些内部类实例,所以你不能直接控制它,所以请确保在命令行传递足够和正确的参数。

答案 1 :(得分:0)

更新您的行为包。它会起作用。