运行Robot Framework测试用例时出现“打开文件过多”错误

0 投票
2 回答
1317 浏览
提问于 2025-04-19 08:37

我有一个测试套件,里面大约有300个测试用例。这些测试用例都是HTTP API调用,全部是“GET”请求。一开始这些测试用例运行得很好。但到了执行的后面,出现了一个错误:“错误:[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

2 个回答

1

增加最大打开文件数(就像Hinata提到的那样)确实是个短期解决办法,但我很惊讶你居然会碰到这个限制。我不明白为什么连续的GET请求会打开这么多文件。

我建议你试试其他的库,看看这个问题是否还存在。你可以试试Robot Framework Requests,或者直接使用Requests这个Python库。你可能还想看看我写的关于这个主题的短博客

1

你需要增加你电脑上可以同时打开的文件数量。

这里有一篇文章,讲的是如何在Ubuntu系统上做到这一点。

在SO上也有类似的问题得到了回答。

撰写回答