test_ ElectronicLicense.py 13 KB
Newer Older
taoke committed
1 2 3 4 5 6 7 8 9 10 11 12
#作者: taoke
#时间: 2021/5/13 18:59
#编码: -- coding: utf-8 --
#版本: !python3.7

#
import pytest,allure,xlrd,requests,os
from common.utils.getExcelData import  get_excelData
from service.login import BMY
from common.tools import request_main
from config import BaseConfig,BMCConfig
from service.login import BMC
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
from common.db import RedisString

"""环境初始化和清除"""
# 1.headers获取
headers = BMCConfig.headers
headers['Pvt-Token'] = BMCConfig.bmc_pvt_token
headers['Token'] = BMCConfig.bmc_token

@pytest.fixture(scope='function') # 绑定车辆 初始化
def get_code() :    # 绑定车辆时获取验证码(手机号是绑定车辆固定参数的手机号)
    payload = {"plateType": "02", "plateNum": "贵APS001", "vehicleIdentifyNum": "000001", "ownerName": "配送车"}
    requests.get(f"{BMCConfig().host}/vehicle/vCode/detail", params=payload, headers=headers)
    num = RedisString(0).get(f"edl:sms_value:18581438351:BIND_VEHICLE")
    num = str(num)[-7:-1]
    return num

@pytest.fixture(scope='function') # 解绑车辆初始化
def get_vehickleId_Tounbind():
    res= requests.get(f"{BMCConfig().pvthost}/vehicle/license/list", headers=headers)
    for dic in res.json()['data']['list']:
        if dic['plateNumName'] == '贵A·PS001':  # 为绑定车辆的车牌
            vehicleId = dic['vehicleId']
            return vehicleId
taoke committed
36 37 38 39



@allure.epic("电子证照")
taoke committed
40
# @allure.feature("电子驾驶证")
taoke committed
41 42 43 44 45 46 47 48
class TestDrivingLicense():
    workBook = xlrd.open_workbook(f'{BaseConfig.root_path}/test_case_data/bmc/bmc_testcase01_20210513.xlsx')
    @allure.story("二维码详情")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/81596")
    @allure.description("/dlVeh/qr")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook,'电子证照', 'dlVehqr'))
    def test_dlVehQr(self,inData):
49
        url = f"{BMCConfig().pvthost}{inData['url']}"
taoke committed
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']

    @allure.story("获取驾驶证图片状态")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/22758")
    @allure.description("/drivingLicense/image/status")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'LicimageStatus'))
    def test_LicimageStatus(self,inData):
65
        url = f"{BMCConfig().pvthost}{inData['url']}"
taoke committed
66 67 68 69 70 71 72 73 74
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']

75
    @allure.story("照片审核状态")
taoke committed
76
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/22759")
77
    @allure.description("/drivingLicense/image/audit/status")
taoke committed
78 79 80
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'imaAuditStatus'))
    def test_imaAuditStatus(self,inData):
81
        url = f"{BMCConfig().pvthost}{inData['url']}"
taoke committed
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']

    @allure.story("图像上传页文案")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/22762")
    @allure.description("/drivingLicense/image/text")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'LicenimageText'))
    def test_LicenimageText(self, inData):
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
        url = f"{BMCConfig().pvthost}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']

    @allure.story("修改驾驶证头像")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/22750")
    @allure.description("/drivingLicense/avatar/update")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'LicenAvaUpdate'))
    def test_LicenAvaUpdate(self, inData):
        url = f"{BMCConfig().host}{inData['url']}"
taoke committed
114 115 116 117 118 119 120 121 122
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']

123
    # @pytest.mark.scoreDetail
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
    @allure.story("驾照扣分记录")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/5332")
    @allure.description("/drivingLicense/score/detail")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'scoreDetail'))
    def test_scoreDetail(self, inData):
        url = f"{BMCConfig().pvthost}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']
taoke committed
139

140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
    @allure.story("驾驶证图片接口")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/10859")
    @allure.description("/drivingLicense/image")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'LicenseImage'))
    def test_LicenseImage(self, inData):
        url = f"{BMCConfig().pvthost}{inData['url']}"
        # method = inData['method']
        req_data = inData['reqData']
        # expectData = inData['expectData']
        # headers = inData['headers']
        """请求"""
        res = requests.get(url,params=req_data,headers=headers)
        """断言,此接口响应和其他不通,暂未做断言"""
        # assert res['code'] == expectData['code']
taoke committed
155 156


157 158
    # @pytest.fixture(scope='function')       # 用例中不能这么写
    # @pytest.mark.usefixtures('test_vehicleLicenseList')
taoke committed
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
    @allure.story("我的行驶证列表")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/46536")
    @allure.description("/vehicle/license/list")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'vehicleLicenseList'))
    def test_vehicleLicenseList(self, inData):
        url = f"{BMCConfig().pvthost}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']
174 175
        return res['data']['list'][0]['vehicleId']

taoke committed
176

177
    @pytest.mark.run(order=664)     # 建议放在 绑定用例之后
taoke committed
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
    @allure.story("行驶证二维码")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/81596")
    @allure.description("/dlVeh/qr(电子行驶证二维码)")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'vehicledlVehqr'))
    def test_vehicledlVehqr(self, inData):
        url = f"{BMCConfig().pvthost}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']

        """处理"""
        # 1.使用行驶证列表接口获取一个车的vehicleId
        resp = requests.get(f"{BMCConfig().pvthost}/vehicle/license/list", headers=headers)
        vehicleId = resp.json()['data']['list'][0]['vehicleId']
193

taoke committed
194 195 196 197 198 199 200 201
        # 2.修改参数
        req_data['vehicleId'] = vehicleId

        """请求"""
        res = request_main(url, headers, method, req_data,has_token=True)
        """断言"""
        assert res['code'] == expectData['code']

202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227
    """把其他某个用例做为初始化,这种方式还需讨论,暂时不行"""
    # # @pytest.mark.scoreDetail
    # @allure.story("行驶证二维码2")
    # @allure.link("http://yapi.hikcreate.com/project/32/interface/api/81596")
    # @allure.description("/dlVeh/qr(电子行驶证二维码)")
    # @allure.title("{inData[testPoint]}")
    # @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'vehicledlVehqr'))
    # def test_vehicledlVehqr2(self, inData,test_vehicleLicenseList):
    #     url = f"{BMCConfig().pvthost}{inData['url']}"
    #     method = inData['method']
    #     req_data = inData['reqData']
    #     expectData = inData['expectData']
    #     headers = inData['headers']
    #
    #     """处理"""
    #     # 2.修改参数
    #     print("我打印一下", req_data)
    #     req_data['vehicleId'] = test_vehicleLicenseList
    #     print("我打印一下",req_data)
    #
    #     """请求"""
    #     res = request_main(url, headers, method, req_data)
    #     """断言"""
    #     assert res['code'] == expectData['code']


taoke committed
228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
    @allure.story("车辆管理列表")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/10913")
    @allure.description("/vehicle/manage/list")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'vehiclelist'))
    def test_vehiclelist(self, inData):
        url = f"{BMCConfig().pvthost}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']

244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298
    @pytest.mark.run(order=662)
    @allure.story("绑定机动车-发送验证码")
    @allure.link("http://yapi.hikcreate.com/project/31/interface/api/8261")
    @allure.description("/vehicle/vCode/detail")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'bindVcode'))
    def test_bindVcode(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, headers, method, req_data)

        """断言"""
        assert res['code'] == expectData['code']

    @pytest.mark.run(order=663)
    @allure.story("绑定机动车-提交")
    @allure.link("http://yapi.hikcreate.com/project/31/interface/api/8268")
    @allure.description("/vehicle/bind")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'vehicleBind'))
    def test_vehicleBind(self, inData,get_code):
        url = f"{BMCConfig().host}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']

        """处理"""
        # 若参数读出为验证码88888,则修改为正确的
        if req_data["verifyCode"]=="888888":
            req_data["verifyCode"]= get_code
        else:
            pass
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']

    @pytest.mark.run(order=665)         # 需要在绑定用例之后
    @allure.story("解绑机动车备案")
    @allure.link("http://yapi.hikcreate.com/project/32/interface/api/1888")
    @allure.description("/vehicle/unbind")
    @allure.title("{inData[testPoint]}")
    @pytest.mark.parametrize("inData", get_excelData(workBook, '电子证照', 'vehicleUnbind'))
    def test_vehicleUnbind(self, inData, get_vehickleId_Tounbind):
        url = f"{BMCConfig().pvthost}{inData['url']}"
        method = inData['method']
        req_data = inData['reqData']
        expectData = inData['expectData']
        headers = inData['headers']
taoke committed
299

300 301 302 303 304 305
        """处理"""
        req_data["vehicleId"] = get_vehickleId_Tounbind
        """请求"""
        res = request_main(url, headers, method, req_data)
        """断言"""
        assert res['code'] == expectData['code']
taoke committed
306

taoke committed
307 308 309

    def teardown_class(self):
        """清除"""
310 311


taoke committed
312
if __name__ == '__main__':
313
    for one in os.listdir('../../report/tmp'):  # 列出对应文件夹的数据  '-m','scoreDetail' ,
taoke committed
314 315
        if 'json' in one:
            os.remove(f'../../report/tmp/{one}')
316
    pytest.main(['test_ ElectronicLicense.py', '-s',    '--alluredir','../../report/tmp'])
taoke committed
317
    # 启动默认浏览器打开报告
318
    os.system('allure serve ../../report/tmp')
319 320