【问题标题】:Too many open files Error is seen when we run robot framework test cases运行机器人框架测试用例时出现太多打开的文件错误
【发布时间】:2014-09-03 18:55:14
【问题描述】:

我有一个包含大约 300 个测试用例的测试套件。这些测试用例是 HTTP API 调用。都是“GET”API 调用。初始测试用例执行良好。但是在执行结束时,会抛出错误“错误:[Errno 24]打开的文件太多”。即使我们在被测系统中没有任何功能问题,这也会导致测试用例失败。

如何解决这个问题?

报告中的错误是:

error: [Errno 24] Too many open files   
08:55:00.484    DEBUG   Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/HttpLibrary/__init__.py", line 229, in GET
self.app.get(path, {}, self.context.request_headers)

File "/Library/Python/2.7/site-packages/webtest/app.py", line 286, in get

File "/Library/Python/2.7/site-packages/HttpLibrary/livetest.py", line 153, in do_request

File "/Library/Python/2.7/site-packages/HttpLibrary/livetest.py", line 126, in _do_httplib_request

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 973, in request

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 1007, in _send_request

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 969, in endheaders

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 829, in _send_output

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 791, in send

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 772, in connect

File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 571, in create_connection

【问题讨论】:

  • 奇怪。我在我的机器人套件中执行了数百个 GET 并且没有任何问题。您能告诉我们您在 REST 调用中使用的库吗?你能分享一个样本测试吗?
  • 我们正在使用名为“robotframework-httplibrary”的库来运行 HTTP API 测试。当我说测试套件时,我有一个包含 300 个测试用例的文件。 RF 建议每个文件不超过 10 个案例。
  • 您确定是 GET 调用最终导致了错误吗?您是否可能有一些自定义关键字打开文件而不关闭它们,您可能会从设置函数调用它们?
  • 我没有打开文件的自定义关键字。

标签: python python-2.7 robotframework


【解决方案1】:

您必须增加计算机上的最大打开文件数。

Here 是一篇如何在 ubuntu 中实现这一点的文章。

类似的problem 在 SO 上得到回答。

【讨论】:

    【解决方案2】:

    增加打开的最大文件数(如 Hinata 提出的)确实是一个短期的解决方案,但我很惊讶你一开始就达到了这个限制。我不明白为什么连续的 GET 会打开这么多文件。

    我的建议是尝试另一个库来检查这个问题是否仍然存在。您可以尝试Robot Framework Requests 之一,也可以直接调用Requests Python lib。你可能想看看我写的short blog post about this topic

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 2016-05-03
      • 2017-11-14
      • 2014-04-05
      • 2020-12-09
      • 2016-07-21
      相关资源
      最近更新 更多