import pytest from app import schemas, models @pytest.fixture() def create_hardskills(session): hardskill1 = models.Hard_skills(Title="Python") hardskill2 = models.Hard_skills(Title="Java") session.add(hardskill1) session.add(hardskill2) session.commit() session.refresh(hardskill1) session.refresh(hardskill2) return [hardskill1, hardskill2] Glob_StudentID = 1 # Важно!!! Данная переменная не должна совпадать с StudentID из student_data_test. @pytest.fixture def student_data_test(): return { "StudentID": 1234567890, "Name": "Журавлёв Василий Иванович", "Type": "Работу", "Group": "БУТ2101", "Time": ["20", "30", "40"], "Soft_skills": "коммуникабельность, работа в команде, адаптивность", "Link": "https://Vasiliy.com", "Email": "Vasiliy@gmail.com" } @pytest.fixture def job_data_test(create_hardskills): hardskills = create_hardskills return { "job": { "Company_name": "АСУ-ВЭИ", "Job_name": "Работа с ПЛК", "Year": "3", "Qualification": False, "Soft_skills": "Работа в команде", "Salary": 25000, "Email": "info@asu-vei.ru", "Archive": False, "Responsibilities": "Разработка методических пособий, для работы с ПЛК. Тестирование scada системы" }, "hardskills": [ { "JobID": 1, "Hard_skillID": hardskills[0].Hard_skillID }, { "JobID": 1, "Hard_skillID": hardskills[1].Hard_skillID } ] } @pytest.fixture def favourite_data_test(create_student, create_job): student_id = create_student["StudentID"] return { "StudentID": student_id, "JobID": 1 } @pytest.fixture def create_favourite(client, favourite_data_test): response = client.post("/students/favourites/", json=favourite_data_test) assert response.status_code == 201 return response.json() @pytest.fixture def create_job(client, job_data_test): response = client.post("/jobs/", json=job_data_test) assert response.status_code == 201 return response.json() @pytest.fixture def create_student(client, student_data_test): response = client.post("/students/", json={"student": student_data_test}) assert response.status_code == 201 return response.json() def test_root(client): res = client.get("/") assert res.json().get('message') == "I'm ok!" assert res.status_code == 200 def test_get_jobs(client): response = client.get("/students/") assert response.status_code == 200 def test_get_students(client): response = client.get("/students/") assert response.status_code == 200 def test_get_student_by_id(client, create_student): student_id = create_student["StudentID"] response = client.get(f"/students/{student_id}") assert response.status_code == 200 student = schemas.Student(**response.json()) assert student.StudentID == student_id # Возможно стоит удалить этот тест def test_get_student_by_id_not_exist(client, create_student): response = client.get(f"/students/{Glob_StudentID}") assert response.status_code == 404 def test_create_student(client, student_data_test): response = client.post("/students/", json={"student": student_data_test}) assert response.status_code == 201 new_student = schemas.Student(**response.json()) assert new_student.Name == "Журавлёв Василий Иванович" def test_update_student(client, create_student): student_id = create_student["StudentID"] updated_data = { "Name": "Журавлёв Владимир Иванович", "Type": "Стажировку", "Group": "БУТ2101", "Time": ["20"], "Soft_skills": "коммуникабельность, адаптивность", "Link": "https://Vladimir.com", "Email": "Vladimir@gmail.com" } response = client.put(f"/students/{student_id}", json=updated_data) assert response.status_code == 200 updated_student = schemas.Student(**response.json()) assert updated_student.Name == "Журавлёв Владимир Иванович" assert updated_student.Type == "Стажировку" assert updated_student.Group == "БУТ2101" assert updated_student.Time == ["20"] assert updated_student.Soft_skills == "коммуникабельность, адаптивность" assert updated_student.Link == "https://Vladimir.com" assert updated_student.Email == "Vladimir@gmail.com" def test_delete_student(client, create_student): student_id = create_student["StudentID"] response = client.delete(f"/students/{student_id}") assert response.status_code == 204 response = client.get(f"/students/{student_id}") assert response.status_code == 404 # Для этого теста нужно создать job def test_add_to_favourites(client, create_favourite): student_id = create_favourite["StudentID"] job_id = create_favourite["JobID"] assert student_id == student_id assert job_id == 1 # Для этого теста наверное надо ещё заполнить таблицу Matches, так что думаю этот тест не очень стабильный, но о работает))) # def test_get_favourites(client, create_student, create_job, create_favourite): # student_id = create_student["StudentID"] # response = client.get(f"/students/favourites/{student_id}") # # assert response.status_code == 200 # как это может ломать тест? # favourites = response.json() # assert len(favourites) > 0