import unittest
import logging
import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
class TestLoggingSetup(unittest.TestCase):
@classmethod
def setUpClass(cls):
# Configure logging
logging.basicConfig(
filename='test.log',
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filemode='w'
)
def setUp(self):
chrome_options = Options()
chrome_options.add_argument('--headless') # Run headless for test automation
service = Service()
self.driver = webdriver.Chrome(service=service, options=chrome_options)
def test_logging(self):
logging.info('Test started')
self.driver.get('https://example.com')
logging.info('Page opened successfully')
self.assertIn('Example Domain', self.driver.title)
def tearDown(self):
self.driver.quit()
logging.info('Test finished')
@classmethod
def tearDownClass(cls):
# Verify log file content
assert os.path.exists('test.log'), 'Log file does not exist'
with open('test.log', 'r') as f:
log_content = f.read()
assert 'Test started' in log_content, 'Missing "Test started" log'
assert 'Page opened successfully' in log_content, 'Missing "Page opened successfully" log'
assert 'Test finished' in log_content, 'Missing "Test finished" log'
if __name__ == '__main__':
unittest.main()This test script uses Python's unittest framework to organize the test.
In setUpClass, logging is configured to write INFO level messages to test.log with timestamps.
The setUp method starts a headless Chrome browser for automation.
The test method logs 'Test started', opens the webpage, logs 'Page opened successfully', and asserts the page title contains 'Example Domain' to confirm navigation.
The tearDown method closes the browser and logs 'Test finished'.
Finally, tearDownClass verifies the log file exists and contains all expected messages in order.
This structure ensures logging captures key test steps and the test verifies the logging output as expected.