无法使用python套接字实例正确引发异常

时间:2019-12-01 17:52:20

标签: python mocking pytest

我正在尝试在Python中实例化套接字时正确引发异常,但是我无法使其正常工作:

sock.py

import socket

def create_socket():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except OSError:
        return 'OS Error'

test_sock.py

import mock

from sock import create_socket

@mock.patch('socket.socket', side_effect=OSError())
def test_oserror(mock_socket):
    p = create_socket()
    assert p == 'OS Error'

最后我得到https://pastebin.com/N5wY59RH

我的错误在哪里?

1 个答案:

答案 0 :(得分:0)

好的,我在这里找到了问题。 myDict = {0: {'apple': 2, 'orange': 5, 'banana': 4}, 1: {'apple': 2, 'orange': 1, 'banana': 7}} arr = [list(d.values()) for d in myDict.values()] #[[2, 5, 4], [2, 1, 7]] 不是字符串。这是异常类,所以您的代码应该像这样……

sock.py

OSError

test_sock.py

import socket

def create_socket():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind((socket.gethostname(), 1234))
        s.listen(5)
    except OSError:
        return 'OS Error'