test_illegalstudy.py 9.15 KB
Newer Older
1 2 3
__author__ = 'fanxun'
__data__ = "2021-05-17 15:11"

fanxun committed
4
import pytest, allure, xlrd, os, random
5 6 7 8 9 10 11
import config
from common.utils.getExcelData import  get_excelData
from common.tools import request_main
from config import BMCConfig


@allure.feature("三车违法学习")
fanxun committed
12
class TestIllegalStudy():
fanxun committed
13
    workBook = xlrd.open_workbook(f'{BMCConfig.root_path}/test_case_data/bmc/bmc_illegal_study_20210513.xlsx')
fanxun committed
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

    @pytest.fixture()
    def test_pre_recent_grade(self):
        """查看是否有答题记录"""
        url = f"{BMCConfig().host}/answer/logList"
        method = 'get'
        req_data = {'pageIndex': 1, 'pageSize': 20}
        res = request_main(url=url, headers=None, method=method, data=req_data, has_token=False)
        # 答题记录 res['data']['totalCount']
        return res['data']

    @allure.story("查询最近成绩")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/67503")
    @allure.description("/answer/recentGrade")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.usefixtures('test_pre_recent_grade')
    @pytest.mark.parametrize("inData", get_excelData(workBook, '三车违法学习', 'recentGradeIllegalstudy'))
    def test_recent_grade_illegal_study(self, inData, test_pre_recent_grade):
        url = f"{BMCConfig().host}{inData['url']}"
        method  = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        is_answer_record = test_pre_recent_grade['totalCount']
        if is_answer_record == 0:  # 无答题记录
            expectData['code'] = 1006
        else:
            expectData['code'] = 1000
        res = request_main(url=url, headers=headers, method=method, data=req_data, has_token=False)
fanxun committed
43
        allure.attach("{0}".format(res), "用例结果")
fanxun committed
44 45 46 47 48 49 50 51 52 53 54 55 56 57
        assert res['code'] == expectData['code']

    @allure.story("获取典型案例视频")
    @allure.link("http://yapi.hikcreate.com/project/31/interface/api/57606")
    @allure.description("/illegal/study/video/typicalCase")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '三车违法学习', 'typicalCaseIllegalstudy'))
    def test_typical_case_illegal_study(self, inData):
        url = f"{BMCConfig().host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        res = request_main(url=url, headers=headers, method=method, data=req_data, has_token=False)
fanxun committed
58
        allure.attach("{0}".format(res), "用例结果")
fanxun committed
59
        assert res['code'] == expectData['code']
60 61 62 63 64 65

    @allure.story("获取试卷")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/69573")
    @allure.description("/paper/getPaper")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '三车违法学习', 'getPaperIllegalstudy'))
fanxun committed
66
    def test_get_paper_illegal_study(self, inData):
67 68 69 70
        url = f"{BMCConfig().host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
fanxun committed
71 72
        headers = inData['headers']
        res = request_main(url=url, headers=headers, method=method, data=req_data, has_token=False)
fanxun committed
73
        allure.attach("{0}".format(res), "用例结果")
fanxun committed
74 75 76 77 78 79 80 81
        assert res['code'] == expectData['code']

    @pytest.fixture()
    def test_pre_get_paper_illegal_study(self):
        """获取试卷套件"""
        url = f"{BMCConfig().host}/paper/getPaper"
        method = 'get'
        req_data = None
fanxun committed
82
        res = request_main(url=url, headers=None, method=method, data=req_data, has_token=False)
83
        topic_lists = res['data']['topicList']
84

fanxun committed
85 86 87 88
        browsequestion = {}
        choosequestion = {}
        browsequestion['answerId'] = res['data']['answerId']
        choosequestion['answerId'] = res['data']['answerId']
fanxun committed
89

90
        for item in topic_lists:
fanxun committed
91 92 93 94 95 96 97
            if item['topicType'] == 2 and len(browsequestion) == 1:  # 浏览题
                browsequestion['topicId'] = item['topicId']
                browsequestion['topicType'] = item['topicType']
            elif item['topicType'] == 1 and len(choosequestion) == 1:
                choosequestion['topicId'] = item['topicId']
                choosequestion['topicType'] = item['topicType']
        return browsequestion, choosequestion
98 99 100 101 102

    @allure.story("提交答案")
    @allure.link("http://yapi.hikcreate.com/project/31/interface/api/67473")
    @allure.description("/paper/submitAnswer")
    @allure.title("{inData[testPoint]}")
fanxun committed
103 104
    @pytest.mark.usefixtures('test_pre_get_paper_illegal_study')
    @pytest.mark.parametrize("inData", get_excelData(workBook, '三车违法学习', 'submitAnswerIllegalstudy'))
fanxun committed
105
    def test_submit_answer_illegal_study(self, inData, test_pre_get_paper_illegal_study):
fanxun committed
106
        browsequestion, choosequestion = test_pre_get_paper_illegal_study
107 108 109
        url = f"{BMCConfig().host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
fanxun committed
110 111 112
        req_data['answerId'] = browsequestion['answerId']
        req_data['topicId'] = browsequestion['topicId']
        req_data['topicType'] = browsequestion['topicType']
113
        expectData = inData['expectData']
fanxun committed
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
        case_num = inData['caseNum']
        if case_num == 'submitAnswerIllegalstudy001':
            req_data['answerId'] = browsequestion['answerId']
            req_data['topicId'] = browsequestion['topicId']
        elif case_num == 'submitAnswerIllegalstudy002':
            req_data['answerId'] = browsequestion['answerId']
            while True:
                topic_id = random.randint(1, 100)
                if topic_id != browsequestion['topicId']:
                    req_data['topicId'] = topic_id
                    break
        elif case_num == 'submitAnswerIllegalstudy003':
            req_data['topicId'] = browsequestion['topicId']
            while True:
                answer_id = random.randint(1, 100)
                if answer_id != browsequestion['answerId']:
                    req_data['answerId'] = answer_id
                    break
        elif case_num == 'submitAnswerIllegalstudy004':
            req_data['answerId'] = browsequestion['answerId']
            req_data['topicId'] = browsequestion['topicId']
            req_data['topicType'] = 1
        elif case_num == 'submitAnswerIllegalstudy005':
            req_data['answerId'] = choosequestion['answerId']
            req_data['topicId'] = choosequestion['topicId']

fanxun committed
140
        res = request_main(url=url, headers=None, method=method, data=req_data, has_token=False)
fanxun committed
141
        allure.attach("{0}".format(res), "用例结果")
142 143
        assert res['code'] == expectData['code']

fanxun committed
144 145 146 147 148 149 150 151 152 153 154 155
    @allure.story("查询成绩(只有错题)")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/67485")
    @allure.description("/answer/detail")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '三车违法学习', 'detailIllegalstudy'))
    def test_detail_illegal_study(self, inData):
        url = f"{BMCConfig().host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        res = request_main(url=url, headers=headers, method=method, data=req_data, has_token=False)
fanxun committed
156
        allure.attach("{0}".format(res), "用例结果")
fanxun committed
157 158 159 160 161 162 163 164 165 166 167 168 169 170
        assert res['code'] == expectData['code']

    @allure.story("查询答题记录列表")
    @allure.link("http://yapi.hikcreate.com/project/31/interface/api/67497")
    @allure.description("/answer/logList")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '三车违法学习', 'logListIllegalstudy'))
    def test_log_list_illegal_study(self, inData):
        url = f"{BMCConfig().host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        res = request_main(url=url, headers=headers, method=method, data=req_data, has_token=False)
fanxun committed
171
        allure.attach("{0}".format(res), "用例结果")
fanxun committed
172 173 174 175 176 177 178 179 180 181 182 183 184 185
        assert res['code'] == expectData['code']

    @allure.story("答题记录查询")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/67491")
    @allure.description("/answer/log")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '三车违法学习', 'logIllegalstudy'))
    def test_log_illegal_study(self, inData):
        url = f"{BMCConfig().host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        res = request_main(url=url, headers=headers, method=method, data=req_data, has_token=False)
fanxun committed
186
        allure.attach("{0}".format(res), "用例结果")
fanxun committed
187
        assert res['code'] == expectData['code']
188 189 190 191 192 193 194 195 196 197 198

if __name__ == '__main__':
    pytest.main(['-s', '-v', 'test_illegalstudy.py',
                 r'--alluredir=D:\项目\接口自动化\InterfaceAutoTest\report', '--clean-alluredir'])
#
    os.system('allure serve D:\项目\接口自动化\InterfaceAutoTest\\report')