我写了一个小的服务器聊天,它做了非常基本的事情,我想围绕它编写测试。不幸的是我很遗憾。我需要一些帮助才能找到正确的轨道。
我有一个名为Server()的类,它包含一个名为bind_socket()的方法。我想编写单元测试(最好使用pytest)来测试以下方法:
class Server(Threading.Thread):
""" Server side class
Instanciate a server in a thread.
"""
MAX_WAITING_CONNECTIONS = 10
def __init__(self, host='localhost', port=10000):
""" Constructor of the Server class.
Initialize the instance in a thread.
Args:
host (str): Host to which to connect (default=localhost)
port (int): Port on which to connect (default=10000)
"""
threading.Thread.__init__(self)
self.host = host
self.port = port
self.connections = []
self.running = True
def bind_socket(self, ip=socket.AF_INET, protocol=socket.SOCK_STREAM):
self.server_socket = socket.socket(ip, protocol)
self.server_socket.bind((self.host, self.port))
self.server_socket.listen(self.MAX_WAITING_CONNECTIONS)
self.connections.append(self.server_socket)
我想知道为这种方法编写测试的最佳方法是什么,因为它没有返回任何内容。我应该模拟它并尝试返回socket(),bind(),listen()和append()的调用次数,还是以错误的方式继续?我很失落,我做了很多测试,无论是pytest和unittest,观看会议和阅读文章,我仍然没有任何工作。 一些解释和/或例子将不胜感激。
非常感谢
答案 0 :(得分:0)
对于bind_socket
的每一行,您应该问自己一些问题:
您希望您的测试涵盖所有这些可能性。
例如,如果socket.bind
已经绑定,socket.listen
可以引发异常,或者{{1}}可以引发异常。之后关闭插座吗?