ready to test
This commit is contained in:
@@ -2,6 +2,7 @@ import socket
|
||||
import threading
|
||||
import time
|
||||
import unittest
|
||||
import sys
|
||||
|
||||
class TestBudgetChat(unittest.TestCase):
|
||||
SERVER_HOST = 'localhost'
|
||||
@@ -39,9 +40,11 @@ class TestBudgetChat(unittest.TestCase):
|
||||
_ = self.receive_message(client) # Welcome message
|
||||
client.send(f"{name}\n".encode('ascii'))
|
||||
# Server should disconnect us
|
||||
response = self.receive_message(client)
|
||||
with self.assertRaises((ConnectionResetError, ConnectionAbortedError, socket.error)):
|
||||
client.send("test\n".encode('ascii'))
|
||||
client.sendall("test\n".encode('ascii'))
|
||||
response = self.receive_message(client)
|
||||
response = self.receive_message(client)
|
||||
response = self.receive_message(client)
|
||||
client.close()
|
||||
|
||||
def test_valid_username(self):
|
||||
@@ -95,7 +98,7 @@ class TestBudgetChat(unittest.TestCase):
|
||||
client.send(f"{username}\n".encode('ascii'))
|
||||
_ = self.receive_message(client) # Room info
|
||||
clients.append(client)
|
||||
time.sleep(0.1) # Small delay to prevent race conditions
|
||||
# time.sleep(0.1) # Small delay to prevent race conditions
|
||||
|
||||
# Send a message from the last client
|
||||
test_message = "Hello from last user!"
|
||||
@@ -105,6 +108,7 @@ class TestBudgetChat(unittest.TestCase):
|
||||
expected = f"[{usernames[-1]}] {test_message}"
|
||||
for i in range(len(clients)-1):
|
||||
received = self.receive_message(clients[i])
|
||||
print(f"Received: {received}")
|
||||
self.assertEqual(expected, received)
|
||||
|
||||
# Cleanup
|
||||
@@ -126,10 +130,49 @@ class TestBudgetChat(unittest.TestCase):
|
||||
# Close client2 and check if client1 receives departure message
|
||||
client2.close()
|
||||
departure_msg = self.receive_message(client1)
|
||||
print(departure_msg)
|
||||
self.assertTrue("user2" in departure_msg)
|
||||
self.assertTrue(departure_msg.startswith("*"))
|
||||
|
||||
client1.close()
|
||||
|
||||
def list_tests():
|
||||
"""List all available tests"""
|
||||
print("\nAvailable tests:")
|
||||
test_methods = [method for method in dir(TestBudgetChat) if method.startswith('test_')]
|
||||
for i, test in enumerate(test_methods, 1):
|
||||
print(f"{i}. {test}")
|
||||
print("\n0. Run all tests")
|
||||
|
||||
def run_selected_test(test_number):
|
||||
"""Run a specific test based on user selection"""
|
||||
suite = unittest.TestSuite()
|
||||
test_methods = [method for method in dir(TestBudgetChat) if method.startswith('test_')]
|
||||
|
||||
if test_number == 0:
|
||||
# Run all tests
|
||||
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestBudgetChat))
|
||||
else:
|
||||
try:
|
||||
selected_test = test_methods[test_number - 1]
|
||||
suite.addTest(TestBudgetChat(selected_test))
|
||||
except IndexError:
|
||||
print("Invalid test number!")
|
||||
return
|
||||
|
||||
runner = unittest.TextTestRunner(verbosity=2)
|
||||
runner.run(suite)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
while True:
|
||||
list_tests()
|
||||
try:
|
||||
choice = input("\nEnter test number (or 'q' to quit): ")
|
||||
if choice.lower() == 'q':
|
||||
break
|
||||
test_number = int(choice)
|
||||
run_selected_test(test_number)
|
||||
except ValueError:
|
||||
print("Please enter a valid number!")
|
||||
|
||||
input("\nPress Enter to continue...")
|
||||
Reference in New Issue
Block a user