/
georgiy
/
work
Обзор
Документация
Войти
/
georgiy
/
work
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
task3/tests.py
84 строки
3 KB
Georgiy Yankovskiy
task3
17 ноя 2024, 23:36
17 ноя 2024, 23:36
bbf7be0
Код
Авторство
О чём код?
import os import subprocess import time import signal import sqlite3 def get_file_record_count_from_database(file_name, db_path="./db.sqlite"): try: conn = sqlite3.connect(db_path) cursor = conn.cursor() cursor.execute('''SELECT COUNT(*) FROM versions WHERE filename=?''', (file_name,)) count = cursor.fetchone()[0] conn.close() return count except Exception as e: print(f"Произошла ошибка при доступе к базе данных: {e}") return -1 # Функция для запуска основной программы def start_main_program(): program_process = subprocess.Popen(["python3", "-m", "main", "./config"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) # time.sleep(1) return program_process # Функция для остановки процесса основной программы def stop_main_program(program_process): # program_process.send_signal(signal.SIGINT) program_process.kill() # Функция для проверки внесения файла в базу данных def check_file_in_database(file_name, expected_count): # Предположим, что у нас есть функция для проверки количества записей в базе данных по имени файла actual_count = get_file_record_count_from_database(file_name) assert actual_count == expected_count, f"Ожидалось {expected_count}, но было {actual_count}" # Основная функция тестирования def test_config_tracking(): # Запускаем основную программу program_process = start_main_program() # Ждем некоторое время, чтобы программа успела запуститься time.sleep(1) # Тестируем сохранение файла "file.config" with open("./config/file.config", "w") as f: f.write("test content") # Ожидаем несколько секунд, чтобы система успела обработать изменение time.sleep(1) # Проверяем, что файл был внесен в базу данных один раз check_file_in_database("file.config", 1) # Тестируем сохранение файла "another.config" дважды with open("./config/another.config", "w") as f: f.write("initial content") # Ожидаем несколько секунд, чтобы система успела обработать изменение time.sleep(1) with open("./config/another.config", "w") as f: f.write("updated content") # Ожидаем несколько секунд, чтобы система успела обработать второе изменение time.sleep(1) # Проверяем, что файл был внесен в базу данных два раза check_file_in_database("another.config", 3) # Останавливаем процесс основной программы stop_main_program(program_process) print("Все тесты пройдены!") # Запускаем тестирование test_config_tracking()