Airtest icon indicating copy to clipboard operation
Airtest copied to clipboard

PO模型下使用pytest日志报错ValueError: I/O operation on closed file.

Open zhangyinrainbow opened this issue 2 years ago • 2 comments

:bulb:相关项目: Airtest

标题: [问题咨询]PO模型下使用pytest日志报错ValueError: I/O operation on closed file.

AirtestIDE版本:

  • [x] 使用了本地Pyhton环境运行脚本
  • Python版本: 3.8.10
  • Airtest版本: v1.2.7

报错描述:     使用airtest来做PO模式的UI自动化,airtest的操作和定位信息作为handle层,在通过pytest执行用例的时候,直行通过,但是有报错信息

相关截图:

报错Log:

--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 1088, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:

  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 92, in exitfunc

    _cleanup()
======================= 1 passed, 2 warnings in 14.25s ========================
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 64, in _cleanup
    func(*args, **kwargs)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 1714, in cleanup_adb_forward
    adb._cleanup_forwards()
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 897, in _cleanup_forwards
    self.remove_forward(local)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 584, in remove_forward
    self.cmd(cmds)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 179, in cmd
    proc = self.start_cmd(cmds, device)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 147, in start_cmd
    LOGGING.debug(" ".join(cmds))
Message: 'C:\\Users\\EDY\\PycharmProjects\\airUI\\venv\\Lib\\site-packages\\airtest\\core\\android\\static\\adb\\windows\\adb.exe -P 5037 -s JPF4C19123011893 forward --remove tcp:15989'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 1088, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 92, in exitfunc
    _cleanup()
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 64, in _cleanup
    func(*args, **kwargs)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 1714, in cleanup_adb_forward
    adb._cleanup_forwards()
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 897, in _cleanup_forwards
    self.remove_forward(local)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 584, in remove_forward
    self.cmd(cmds)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 179, in cmd
    proc = self.start_cmd(cmds, device)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 147, in start_cmd
    LOGGING.debug(" ".join(cmds))
Message: 'C:\\Users\\EDY\\PycharmProjects\\airUI\\venv\\Lib\\site-packages\\airtest\\core\\android\\static\\adb\\windows\\adb.exe -P 5037 -s JPF4C19123011893 forward --remove tcp:12439'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 1088, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\threading.py", line 890, in _bootstrap
    self._bootstrap_inner()
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\nbsp.py", line 37, in _populateQueue
    LOGGING.debug("[%s]%s" % (self.name, repr(line.strip())))
Message: "[rotation_server]b''"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 1088, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\threading.py", line 890, in _bootstrap
    self._bootstrap_inner()
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\nbsp.py", line 37, in _populateQueue
    LOGGING.debug("[%s]%s" % (self.name, repr(line.strip())))
Message: "[minicap_server]b''"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 1088, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 92, in exitfunc
    _cleanup()
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 64, in _cleanup
    func(*args, **kwargs)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\cap_methods\minicap.py", line 408, in teardown_stream
    self._cleanup()
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\cap_methods\minicap.py", line 396, in _cleanup
    func()
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 584, in remove_forward
    self.cmd(cmds)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 179, in cmd
    proc = self.start_cmd(cmds, device)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 147, in start_cmd
    LOGGING.debug(" ".join(cmds))
Message: 'C:\\Users\\EDY\\PycharmProjects\\airUI\\venv\\Lib\\site-packages\\airtest\\core\\android\\static\\adb\\windows\\adb.exe -P 5037 -s JPF4C19123011893 forward --remove tcp:15989'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 1088, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 92, in exitfunc
    _cleanup()
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 64, in _cleanup
    func(*args, **kwargs)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\cap_methods\minicap.py", line 412, in teardown_stream
    self.frame_gen.send(1)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\threadsafe.py", line 27, in send
    return self.it.send(*args)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\cap_methods\minicap.py", line 283, in _get_stream
    LOGGING.debug("minicap stream ends")
Message: 'minicap stream ends'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 1088, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\threading.py", line 890, in _bootstrap
    self._bootstrap_inner()
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932, in _bootstrap_inner
    self.run()
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\nbsp.py", line 37, in _populateQueue
    LOGGING.debug("[%s]%s" % (self.name, repr(line.strip())))
Message: "[airtouch_server]b''"
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
  File "C:\Users\EDY\AppData\Local\Programs\Python\Python38\lib\logging\__init__.py", line 1088, in emit
    stream.write(msg + self.terminator)
ValueError: I/O operation on closed file.
Call stack:
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 92, in exitfunc
    _cleanup()
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\utils\snippet.py", line 64, in _cleanup
    func(*args, **kwargs)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\touch_methods\maxtouch.py", line 117, in teardown
    self.adb.remove_forward("tcp:{}".format(self.localport))
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 584, in remove_forward
    self.cmd(cmds)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 179, in cmd
    proc = self.start_cmd(cmds, device)
  File "C:\Users\EDY\PycharmProjects\airUI\venv\lib\site-packages\airtest\core\android\adb.py", line 147, in start_cmd
    LOGGING.debug(" ".join(cmds))
Message: 'C:\\Users\\EDY\\PycharmProjects\\airUI\\venv\\Lib\\site-packages\\airtest\\core\\android\\static\\adb\\windows\\adb.exe -P 5037 -s JPF4C19123011893 forward --remove tcp:12439'
Arguments: ()

连接设备信息:

设备类型 设备型号 系统版本号 apk名称/下载链接
Android 华为nova4 鸿蒙2.0 特运通货站版

提供最小可复现此BUG的代码:

代码在截图里

zhangyinrainbow avatar Jan 05 '23 08:01 zhangyinrainbow

pytest.ini加上这句: addopts = -s

Ryaningli avatar May 25 '23 02:05 Ryaningli

我也遇到了一样的问题,这个有什么解决方案吗

runningsnai1 avatar May 27 '24 03:05 runningsnai1