test_illegalstudy.py 8.01 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')
14
    
fanxun committed
15 16 17 18 19 20 21 22 23 24 25 26
    # @allure.story("查询最近成绩")
    # @allure.link("http://yapi.hikcreate.com/project/32/interface/api/67503")
    # @allure.description("/answer/recentGrade")
    # @allure.title("{inData[testPoint]}")
    # @pytest.mark.parametrize("inData", get_excelData(workBook, '三车违法学习', 'recentGradeIllegalstudy'))
    # def test_recentGradeIllegalstudy(self,inData):
    #     url = f"{BMCConfig().host}{inData['url']}"
    #     method  = inData['method']
    #     req_data = inData['reqData']
    #     expectData = inData['expectData']
    #     res = request_main(url=url, headers=None, method=method, data=req_data, has_token=True)
    #     assert res['code'] == expectData['code']
fanxun committed
27
    # #
fanxun committed
28 29 30 31 32 33 34 35 36 37 38 39
    # @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_typicalCaseIllegalstudy(self, inData):
    #     url = f"{BMCConfig().host}{inData['url']}"
    #     method = inData['method']
    #     req_data = inData['reqData']
    #     expectData = inData['expectData']
    #     res = request_main(url=url, headers=None, method=method, data=req_data, has_token=True)
    #     assert res['code'] == expectData['code']
40 41 42 43 44 45

    @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
46
    def test_get_paper_illegal_study(self, inData):
47 48 49 50
        url = f"{BMCConfig().host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
fanxun committed
51 52
        headers = inData['headers']
        res = request_main(url=url, headers=headers, method=method, data=req_data, has_token=False)
fanxun committed
53 54 55 56 57 58 59 60
        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
61
        res = request_main(url=url, headers=None, method=method, data=req_data, has_token=False)
62
        topic_lists = res['data']['topicList']
63

fanxun committed
64 65 66 67
        browsequestion = {}
        choosequestion = {}
        browsequestion['answerId'] = res['data']['answerId']
        choosequestion['answerId'] = res['data']['answerId']
fanxun committed
68

69
        for item in topic_lists:
fanxun committed
70 71 72 73 74 75 76
            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
77 78 79 80 81

    @allure.story("提交答案")
    @allure.link("http://yapi.hikcreate.com/project/31/interface/api/67473")
    @allure.description("/paper/submitAnswer")
    @allure.title("{inData[testPoint]}")
fanxun committed
82 83 84 85
    @pytest.mark.usefixtures('test_pre_get_paper_illegal_study')
    @pytest.mark.parametrize("inData", get_excelData(workBook, '三车违法学习', 'submitAnswerIllegalstudy'))
    def test_submitAnswerIllegalstudy(self, inData, test_pre_get_paper_illegal_study):
        browsequestion, choosequestion = test_pre_get_paper_illegal_study
86 87 88
        url = f"{BMCConfig().host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
fanxun committed
89 90 91
        req_data['answerId'] = browsequestion['answerId']
        req_data['topicId'] = browsequestion['topicId']
        req_data['topicType'] = browsequestion['topicType']
92
        expectData = inData['expectData']
fanxun committed
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
        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
119
        res = request_main(url=url, headers=None, method=method, data=req_data, has_token=False)
120 121
        assert res['code'] == expectData['code']

fanxun committed
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
    # @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_detailIllegalstudy(self, inData):
    #     url = f"{BMCConfig().host}{inData['url']}"
    #     method = inData['method']
    #     req_data = inData['reqData']
    #     expectData = inData['expectData']
    #     res = request_main(url=url, headers=None, method=method, data=req_data, has_token=True)
    #     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_logListIllegalstudy(self, inData):
    #     url = f"{BMCConfig().host}{inData['url']}"
    #     method = inData['method']
    #     req_data = inData['reqData']
    #     expectData = inData['expectData']
    #     res = request_main(url=url, headers=None, method=method, data=req_data, has_token=True)
    #     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_logIllegalstudy(self, inData):
    #     url = f"{BMCConfig().host}{inData['url']}"
    #     method = inData['method']
    #     req_data = inData['reqData']
    #     expectData = inData['expectData']
    #     res = request_main(url=url, headers=None, method=method, data=req_data, has_token=True)
    #     assert res['code'] == expectData['code']
160 161 162 163 164 165 166 167 168 169 170

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