test_06_internship_manage.py 12.8 KB
# -*- coding: utf-8 -*-
# ======================================
# @Software: PyCharm
# @Author  : Shitou ✊
# @Time    : 2023/1/13 11:22
# @FileName: test_06_internship_manage.py
# ======================================
"""
实习管理菜单
"""
import json
import os
import unittest

import requests
from jsonpath import jsonpath

from common.handle_config import conf
from common.handle_excel import Excel
from common.handle_log import HandleLog
from common.handle_path import Internship_manage
from common.myddt import data, ddt
from tools.fixture import SelectData
from tools.handle_token import LoginToken, HrLoginToken, StudentLoginToken


# ==================实习管理菜单相关用例==================

# ====================================================================
#                               报名审核-待审核列表查看
# ====================================================================
@ddt
class Test01SelectApplyAuditList(unittest.TestCase):
    select_apply_audit = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), "school_select_apply_audit")
    select_apply_audit_case = select_apply_audit.read_excel()  # 查询报名审核Excel

    @classmethod
    def setUpClass(cls):
        # 获取token
        cls.token = LoginToken.login_token()

    @data(*select_apply_audit_case)
    def test01select_wait_list(self, case):
        # 准备数据
        data = json.loads(case["data"])
        expected = json.loads(case["expected"])
        # 调用接口
        url = conf.get("url", "url_ip") + case["url"]
        herders = {}
        herders["Authorization"] = self.token
        request = requests.request(url=url, method=case["method"], params=data, headers=herders)
        res = request.json()
        print("用例入参:{}".format(data))
        print("预期结果:", expected)
        print("实际结果:", res)
        # 断言
        try:
            self.assertEqual(expected['msg'], res['msg'])
            self.assertEqual(expected['code'], res['code'])
        except AssertionError as e:
            # 写入Excel
            self.select_apply_audit.write_excel(row=case["id"] + 1, column=7, value="不通过")
            HandleLog.log.error("用例标题{},不通过".format(case['title']))
            HandleLog.log.exception(e)
            raise e
        else:
            self.select_apply_audit.write_excel(row=case["id"] + 1, column=7, value="通过")
            # 将创建使用的数据写入到excel表格中
            self.select_apply_audit.write_excel(row=case["id"] + 1, column=9, value=case["data"])
            HandleLog.log.info("用例{},执行通过".format(case["title"]))


# ====================================================================
#                               报名审核-学校端-进行审核
# ====================================================================
@ddt
class Test02SchoolAudit(unittest.TestCase):
    audit = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), "school_audit")
    audit_case = audit.read_excel()  # 查询报名审核Excel

    @classmethod
    def setUpClass(cls):
        # 获取token
        cls.token = LoginToken.login_token()

    def setUp(self):
        # ---获取报名审核id---待审核
        select_apply_excel = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"),
                                   "school_select_apply_audit")
        read_apply_excel = select_apply_excel.read_excel_location("C2")
        read_apply_excel_d = select_apply_excel.read_excel_location("E2")  # 读取params
        apply_list = SelectData(str(read_apply_excel), json.loads(read_apply_excel_d))
        apply_json = apply_list.select_list()
        self.applyId = jsonpath(apply_json, "$..id")[0]  # 获取待审核id

    @data(*audit_case)
    def test01audit(self, case):
        if "#formIds#" in case["data"]:
            case["data"] = case["data"].replace("#formIds#", str(self.applyId))  # 待审核id

        # 准备数据
        data = json.loads(case["data"])
        expected = json.loads(case["expected"])
        # 调用接口
        url = conf.get("url", "url_ip") + case["url"]
        herders = {}
        herders["Authorization"] = self.token
        request = requests.request(url=url, method=case["method"], json=data, headers=herders)
        res = request.json()
        print("用例入参:{}".format(data))
        print("预期结果:", expected)
        print("实际结果:", res)
        # 断言
        try:
            self.assertEqual(expected['msg'], res['msg'])
            self.assertEqual(expected['code'], res['code'])
        except AssertionError as e:
            # 写入Excel
            self.audit.write_excel(row=case["id"] + 1, column=7, value="不通过")
            HandleLog.log.error("用例标题{},不通过".format(case['title']))
            HandleLog.log.exception(e)
            raise e
        else:
            self.audit.write_excel(row=case["id"] + 1, column=7, value="通过")
            # 将创建使用的数据写入到excel表格中
            self.audit.write_excel(row=case["id"] + 1, column=9, value=case["data"])
            HandleLog.log.info("用例{},执行通过".format(case["title"]))


# ====================================================================
#                               报名审核-hr端-待审核列表查看(实习申请列表)
# ====================================================================
@ddt
class Test03HrSelectAuditList(unittest.TestCase):
    select_hr_apply_audit = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), "hr_select_apply_audit")
    select_hr_apply_audit_case = select_hr_apply_audit.read_excel()  # 查询报名审核Excel

    @classmethod
    def setUpClass(cls):
        # 获取token
        cls.token = HrLoginToken.login_token()

    @data(*select_hr_apply_audit_case)
    def test01select_hr_wait_list(self, case):
        # 准备数据
        data = json.loads(case["data"])
        expected = json.loads(case["expected"])
        # 调用接口
        url = conf.get("url", "url_ip") + case["url"]
        herders = {}
        herders["Authorization"] = self.token
        request = requests.request(url=url, method=case["method"], params=data, headers=herders)
        res = request.json()
        print("用例入参:{}".format(data))
        print("预期结果:", expected)
        print("实际结果:", res)
        # 断言
        try:
            self.assertEqual(expected['msg'], res['msg'])
            self.assertEqual(expected['code'], res['code'])
        except AssertionError as e:
            # 写入Excel
            self.select_hr_apply_audit.write_excel(row=case["id"] + 1, column=7, value="不通过")
            HandleLog.log.error("用例标题{},不通过".format(case['title']))
            HandleLog.log.exception(e)
            raise e
        else:
            self.select_hr_apply_audit.write_excel(row=case["id"] + 1, column=7, value="通过")
            # 将创建使用的数据写入到excel表格中
            self.select_hr_apply_audit.write_excel(row=case["id"] + 1, column=9, value=case["data"])
            HandleLog.log.info("用例{},执行通过".format(case["title"]))


# ====================================================================
#                               报名审核-hr端-进行审核2022/01/16
# ====================================================================
@ddt
class Test04HrAudit(unittest.TestCase):
    hr_audit = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"), "hr_audit")
    hr_audit_case = hr_audit.read_excel()  # 查询报名审核Excel

    @classmethod
    def setUpClass(cls):
        # 获取token
        cls.token = HrLoginToken.login_token()

    def setUp(self):
        # ---获取报名审核id---待审核
        select_hr_apply_excel = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"),
                                      "hr_select_apply_audit")
        read_hr_apply_excel = select_hr_apply_excel.read_excel_location("C2")
        read_hr_apply_excel_d = select_hr_apply_excel.read_excel_location("E2")  # 读取params
        hr_apply_list = SelectData(str(read_hr_apply_excel), json.loads(read_hr_apply_excel_d))
        hr_apply_json = hr_apply_list.select_list()
        self.hr_applyId = jsonpath(hr_apply_json, "$..id")[0]  # 获取待审核id

    @data(*hr_audit_case)
    def test01hraudit(self, case):
        if "#formIds#" in case["data"]:
            case["data"] = case["data"].replace("#formIds#", str(self.hr_applyId))  # 待审核id

        # 准备数据
        data = json.loads(case["data"])
        expected = json.loads(case["expected"])
        # 调用接口
        url = conf.get("url", "url_ip") + case["url"]
        herders = {}
        herders["Authorization"] = self.token
        request = requests.request(url=url, method=case["method"], json=data, headers=herders)
        res = request.json()
        print("用例入参:{}".format(data))
        print("预期结果:", expected)
        print("实际结果:", res)
        # 断言
        try:
            self.assertEqual(expected['msg'], res['msg'])
            self.assertEqual(expected['code'], res['code'])
        except AssertionError as e:
            # 写入Excel
            self.hr_audit.write_excel(row=case["id"] + 1, column=7, value="不通过")
            HandleLog.log.error("用例标题{},不通过".format(case['title']))
            HandleLog.log.exception(e)
            raise e
        else:
            self.hr_audit.write_excel(row=case["id"] + 1, column=7, value="通过")
            # 将创建使用的数据写入到excel表格中
            self.hr_audit.write_excel(row=case["id"] + 1, column=9, value=case["data"])
            HandleLog.log.info("用例{},执行通过".format(case["title"]))


# ====================================================================
#                              学生端---选择实习开始时间
# ====================================================================
@ddt
class Test05StudentIntenship(unittest.TestCase):
    student_start_internship = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"),
                                     "student_start_internship")
    student_start_internship_case = student_start_internship.read_excel()  # 学生填写开始时间

    # 登陆前置
    @classmethod
    def setUpClass(cls):
        cls.student_token = StudentLoginToken.login_token()

    def setUp(self):
        # 获取学生端待实习id
        student_select_intership_wait_excle = Excel(os.path.join(Internship_manage, "test_07_apply_audit.xlsx"),
                                                    "student_select_intership_wait")
        read_student_intership_excel = student_select_intership_wait_excle.read_excel_location("C2")
        read_student_intership_excel_d = student_select_intership_wait_excle.read_excel_location("E2")  # 读取params
        student_intership_list = SelectData(str(read_student_intership_excel),
                                            json.loads(read_student_intership_excel_d))
        student_intership_json = student_intership_list.student_select_list()  # 正序查找
        self.student_intership_id = jsonpath(student_intership_json, "$..id")[0]  # 获取实习单待实习id

    # 学生开始时间时间选择
    @data(*student_start_internship_case)
    def test01student_start_intenship_time(self, case):
        if "#practice_id#" in case["data"]:
            case["data"] = case["data"].replace("#practice_id#", str(self.student_intership_id))
        # 准备数据
        data = json.loads(case["data"])
        expected = json.loads(case["expected"])
        # 调用接口
        url = conf.get("url", "url_ip") + case["url"]
        headers = {}
        headers["Authorization"] = self.student_token
        request = requests.request(url=url, method=case["method"], json=data, headers=headers)
        res = request.json()
        print("用例入参:{}".format(data))
        print("预期结果:", expected)
        print("实际结果:", res)
        # 断言
        try:
            self.assertEqual(expected['msg'], res['msg'])
            self.assertEqual(expected['code'], res['code'])
        except AssertionError as e:
            self.student_start_internship.write_excel(row=case['id'] + 1, column=7, value="不通过")
            HandleLog.log.error("用例标题{},不通过".format(case['title']))
            HandleLog.log.exception(e)
            raise e
        else:
            self.student_start_internship.write_excel(row=case["id"] + 1, column=7, value="通过")
            # 将创建使用的数据写入到excel表格中
            self.student_start_internship.write_excel(row=case["id"] + 1, column=9, value=case["data"])
            HandleLog.log.info("用例{},执行通过".format(case["title"]))


if __name__ == '__main__':
    Test04HrAudit()
    Test05StudentIntenship()