/
megaokna43
/
courses_4
Обзор
Документация
Войти
/
megaokna43
/
courses_4
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
tests/test_utils.py
166 строк
8 KB
megaokna43
проверил работу кода и тестов
14 дек 2024, 21:51
14 дек 2024, 21:51
dda6769
Код
Авторство
О чём код?
import pytest from src.utils import filter_city, filter_for_description, filter_for_salary from src.vacancy import Vacancy # загружаю класс Vacancy vacancies_instances = [ Vacancy("Бухгалтер", "Гомель", 1000, 1500, "https://hh.ru/vacancy/112621234", "Оприходование товаров."), Vacancy("Менеджер", "Минск", 2000, 2500, "https://hh.ru/vacancy/112621235", "Управление командой."), Vacancy("Программист", "Гомель", 3000, 3500, "https://hh.ru/vacancy/112621236", "Разработка программного обеспечения."), Vacancy("Экономист", "Брест", 4000, 4500, "https://hh.ru/vacancy/112621237", "Анализ финансовых данных.") ] def test_filter_city(): # Тест фильтрации вакансий по городу city = "Гомель" expected_vacancies = [ Vacancy("Бухгалтер", "Гомель", 1000, 1500, "https://hh.ru/vacancy/112621234", "Оприходование товаров."), Vacancy("Программист", "Гомель", 3000, 3500, "https://hh.ru/vacancy/112621236", "Разработка программного обеспечения.") ] filtered_vacancies = filter_city(vacancies_instances, city) assert len(filtered_vacancies) == len(expected_vacancies) for i in range(len(filtered_vacancies)): assert filtered_vacancies[i].name == expected_vacancies[i].name assert filtered_vacancies[i].city == expected_vacancies[i].city assert filtered_vacancies[i].salary_from == expected_vacancies[i].salary_from assert filtered_vacancies[i].salary_to == expected_vacancies[i].salary_to assert filtered_vacancies[i].url == expected_vacancies[i].url assert filtered_vacancies[i].description == expected_vacancies[i].description def test_filter_city_empty_vacancies(): # Тест фильтрации пустого списка вакансий vacancies_instances = [] city = "Гомель" filtered_vacancies = filter_city(vacancies_instances, city) assert len(filtered_vacancies) == 0 def test_filter_city_none_city(): # Тест фильтрации вакансий по None городу city = None filtered_vacancies = filter_city(vacancies_instances, city) assert len(filtered_vacancies) == 0 def test_filter_city_empty_city(): # Тест фильтрации вакансий по пустому городу city = "" filtered_vacancies = filter_city(vacancies_instances, city) assert len(filtered_vacancies) == 0 def test_filter_for_description(): # Тест фильтрации вакансий по ключевым словам в описании keyword = "программного" expected_vacancies = [ Vacancy("Программист", "Гомель", 3000, 3500, "https://hh.ru/vacancy/112621236", "Разработка программного обеспечения.") ] filtered_vacancies = filter_for_description(vacancies_instances, keyword) assert len(filtered_vacancies) == len(expected_vacancies) for i in range(len(filtered_vacancies)): assert filtered_vacancies[i].name == expected_vacancies[i].name assert filtered_vacancies[i].city == expected_vacancies[i].city assert filtered_vacancies[i].salary_from == expected_vacancies[i].salary_from assert filtered_vacancies[i].salary_to == expected_vacancies[i].salary_to assert filtered_vacancies[i].url == expected_vacancies[i].url assert filtered_vacancies[i].description == expected_vacancies[i].description def test_filter_for_description_empty_vacancies(): # Тест фильтрации пустого списка вакансий vacancies_instances = [] keyword = "программного" filtered_vacancies = filter_for_description(vacancies_instances, keyword) assert len(filtered_vacancies) == 0 def test_filter_for_description_none_keyword(): # Тест фильтрации вакансий по None ключевому слову vacancies_instances = [ Vacancy("Менеджер", "Минск", 0, 0, "https://hh.ru/vacancy/112621235", "Управление командой.")] keyword = None with pytest.raises(TypeError): filter_for_description(vacancies_instances, keyword) def test_filter_for_description_empty_keyword(): # Тест фильтрации вакансий по пустому ключевому слову vacancies_instances = [ Vacancy("Менеджер", "Минск", 0, 0, "https://hh.ru/vacancy/112621235", "Управление командой.")] keyword = "" filtered_vacancies = filter_for_description(vacancies_instances, keyword) assert len(filtered_vacancies) == 1 def test_filter_for_description_valid_keyword(): # Тест фильтрации вакансий по валидному ключевому слову vacancies_instances = [ Vacancy("Менеджер", "Минск", 0, 0, "https://hh.ru/vacancy/112621235", "Управление командой.") ] keyword = "Управление" # Изменено на слово, которое есть в описании filtered_vacancies = filter_for_description(vacancies_instances, keyword) assert len(filtered_vacancies) == 1 # Проверяем, что длина отфильтрованного списка равна 1 assert filtered_vacancies[0].description == "Управление командой." # Убедитесь, что возвращена правильная вакансия def test_filter_for_description_invalid_keyword(): # Тест фильтрации вакансий по невалидному ключевому слову vacancies_instances = [ Vacancy("Менеджер", "Минск", 0, 0, "https://hh.ru/vacancy/112621235", "Управление командой.") ] keyword = "Директор" filtered_vacancies = filter_for_description(vacancies_instances, keyword) assert len(filtered_vacancies) == 0 # Проверяем, что длина отфильтрованного списка равна 0 def test_filter_for_salary(): # Тест фильтрации вакансий по зарплате salary = 2000 expected_vacancies = [ Vacancy("Менеджер", "Минск", 2000, 2500, "https://hh.ru/vacancy/112621235", "Управление командой."), Vacancy("Программист", "Гомель", 3000, 3500, "https://hh.ru/vacancy/112621236", "Разработка программного обеспечения."), Vacancy("Экономист", "Брест", 4000, 4500, "https://hh.ru/vacancy/112621237", "Анализ финансовых данных.") ] filtered_vacancies = filter_for_salary(vacancies_instances, salary) assert len(filtered_vacancies) == len(expected_vacancies) for i in range(len(filtered_vacancies)): assert filtered_vacancies[i].name == expected_vacancies[i].name assert filtered_vacancies[i].city == expected_vacancies[i].city assert filtered_vacancies[i].salary_from == expected_vacancies[i].salary_from assert filtered_vacancies[i].salary_to == expected_vacancies[i].salary_to assert filtered_vacancies[i].url == expected_vacancies[i].url assert filtered_vacancies[i].description == expected_vacancies[i].description def test_filter_for_salary_empty_vacancies(): # Тест фильтрации пустого списка вакансий vacancies_instances = [] salary = 2000 filtered_vacancies = filter_for_salary(vacancies_instances, salary) assert len(filtered_vacancies) == 0 def test_filter_for_salary_none_salary(): # Тест фильтрации вакансий по None зарплате vacancies_instances = [ Vacancy("Менеджер", "Минск", 0, 0, "https://hh.ru/vacancy/112621235", "Управление командой.")] filtered_vacancies = filter_for_salary(vacancies_instances, salary=0) assert len(filtered_vacancies) == 1 def test_filter_for_salary_invalid_salary(): # Тест фильтрации вакансий по невалидной зарплате salary = "abc" with pytest.raises(TypeError): filter_for_salary(vacancies_instances, salary)