test_05_student_practice.py 5.4 KB
# -*- coding: utf-8 -*-
# ======================================
# @Software: PyCharm
# @Author  : Shitou ✊、
# @Time    : 2023/1/9 16:32
# @FileName: test_05_student_practice.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.myddt import ddt, data
from common.handle_path import Student_practice
from tools.fixture import SelectData
from tools.handle_token import StudentLoginToken


# ==================小程序学生端==================

# ====================================================================
#                               学生查看全部实习列表
# ====================================================================
@ddt
class Test01SelectAllPractice(unittest.TestCase):
    """学生查看全部实习"""
    select_student_practice = Excel(os.path.join(Student_practice, "test_06__practice.xlsx"),
                                    "select_internship_practice")
    select_student_practice_case = select_student_practice.read_excel()

    @classmethod
    def setUpClass(cls):
        cls.token = StudentLoginToken.login_token()

    @data(*select_student_practice_case)
    def test01select_allpatice(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_student_practice.write_excel(row=case["id"] + 1, column=7, value="不通过")
            HandleLog.log.error("用例标题{},不通过".format(case['title']))
            HandleLog.log.exception(e)
            raise e
        else:
            self.select_student_practice.write_excel(row=case["id"] + 1, column=7, value="通过")
            # 将创建使用的数据写入到excel表格中
            self.select_student_practice.write_excel(row=case["id"] + 1, column=9, value=case["data"])
            HandleLog.log.info("用例{},执行通过".format(case["title"]))


# ====================================================================
#                               学生报名
# ====================================================================
@ddt
class Test02StudentApply(unittest.TestCase):
    """学生查看全部实习"""
    student_apply = Excel(os.path.join(Student_practice, "test_06__practice.xlsx"),
                          "student_apply")
    student_apply_case = student_apply.read_excel()

    @classmethod
    def setUpClass(cls):
        # 获取登陆token
        cls.token = StudentLoginToken.login_token()
        # 获取全部实习列表id
        select_practice = Excel(os.path.join(Student_practice, "test_06__practice.xlsx"),
                                "select_internship_practice")
        read_practice_excel = select_practice.read_excel_location("C2")
        practice_list = SelectData(str(read_practice_excel))
        practice_json = practice_list.student_select_list()
        cls.practiceId = jsonpath(practice_json, "$..id")[0]  # 获取小程序全部实习id

    @data(*student_apply_case)
    def test01student_apply(self, case):
        # 准备数据
        if "#jobId#" in case["data"]:
            # case["data"] = case["data"].replace("#jobId#", str(conf.get("hr", "hr_jobid")))----2023/03/13修改需求,修改为获取基地岗位
            case["data"] = case["data"].replace("#jobId#", str(conf.get("school", "school_base_jobid")))
        data = json.loads(case["data"])
        expected = json.loads(case["expected"])
        if "{id}" in case["url"]:
            case["url"] = case["url"].replace("{id}", str(self.practiceId))  # 小程序全部实习id
        # 调用接口
        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.student_apply.write_excel(row=case["id"] + 1, column=7, value="不通过")
            HandleLog.log.error("用例标题{},不通过".format(case['title']))
            HandleLog.log.exception(e)
            raise e
        else:
            self.student_apply.write_excel(row=case["id"] + 1, column=7, value="通过")
            # 将创建使用的数据写入到excel表格中
            self.student_apply.write_excel(row=case["id"] + 1, column=9, value=case["data"])
            HandleLog.log.info("用例{},执行通过".format(case["title"]))