#作者: taoke #时间: 2021/5/31 16:34 #编码: -- coding: utf-8 -- #版本: !python3.7 import pytest,allure,xlrd,requests,os,datetime,random 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 from common.db import RedisString,MYSQL # @allure.epic("斑马信用") @allure.feature("电动车预约") class TestDrivingLicense(): workBook = xlrd.open_workbook(f'{BaseConfig.root_path}/test_case_data/bmc/bmc_ElectricBicycle_20210531.xlsx') def setup_class(self): pass @allure.story("“通行证类型”状态") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/19711") @allure.description("/pvtapi/deliveryVehicle/passcardTypeState") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'passcardTypeState')) def test_passcardTypeState(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("电动车banner接口") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/61377") @allure.description("接口:/electric/electricBannerOrPop,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'electricBannerOrPop')) def test_electricBannerOrPop(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("电动车banner接口") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/61377") @allure.description("接口:/electric/electricBannerOrPop,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'electricBannerOrPop')) def test_electricBannerOrPop(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("检测是否领取") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/45684") @allure.description("接口:/pvtapi/electricBicycle/isBind,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'electricBicycleIsBind')) def test_electricBicycleIsBind(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("电动自行车行驶证二维码") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/46554") @allure.description("接口:/electricBicycle/qr,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'ElectricBicycleQr')) def test_ElectricBicycleQr(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("获取须知信息") @allure.link("http://yapi.hikcreate.com/project/31/interface/api/7704") @allure.description("接口:/pvtapi/sys/notice/detail,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'noticeDetail')) def test_noticeDetail(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("文件上传") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/5452") @allure.description("接口:/pvtapi/file/upload,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'fileUpload')) def test_fileUpload(self, inData): url = f"{BMCConfig().host}{inData['url']}" expectData = inData['expectData'] """特殊处理""" headers = {'City-Code': "520100", 'Device-Brand': "vivo", 'Device-Code': "000000001e167ed7000000001e167ed7", 'Device-Model': "vivo vivo X20", 'Device-Name': "vivo+X20", 'Device-Type': "Android", 'Mac': "38:6E:A2:A0:0E:AF", 'mimeType': "application/json", 'Net': "wifi", 'OS-Type': "Android", 'OS-Version': "27", 'Pvt-Token': f"{BMCConfig.bmc_pvt_token}", 'Resolution': "2034x1080", 'Token': f"{BMCConfig.bmc_token}", 'Version': "2.2.6"} user_file = {'file': ("321.gif", open(f"{BaseConfig.root_path}/test_case_data/bmc/321.gif", 'rb'), 'image/png/jpg')} res = requests.post(url, files=user_file, headers=headers) allure.attach(f"{res.json()}", "响应结果", allure.attachment_type.TEXT) assert res.json()['code'] == expectData['code'] @allure.story("获取系统字典") @allure.link("http://yapi.hikcreate.com/project/31/interface/api/5077") @allure.description("接口:/pvtapi/sys/dict/list,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'sysDictlist')) def test_sysDictlist(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("地址选择") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/45572") @allure.description("接口://electricBicycle/apply/address/addressSelector,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'addressSelector')) def test_addressSelector(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("车架号是否存在") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/45032") @allure.description("接口:/pvtapi/electricBicycle/getBikeCccInfo,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'getBikeCccInfo')) def test_getBikeCccInfo(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("检查车架号和身份证号") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/45540") @allure.description("接口:/pvtapi/electricBicycle/checkStatus,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'checkStatus')) def test_checkStatus(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("车管所列表") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/45216") @allure.description("接口:/pvtapi/electricBicycle/dmv/list,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'dmvList')) def test_dmvList(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @allure.story("获取可预约日期的列表") @allure.link("http://yapi.hikcreate.com/project/32/interface/api/45508") @allure.description("接口:/pvtapi/electricBicycle/exchangeLicensePlate/getDataList,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'getDataList')) def test_getDataList(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) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] @pytest.mark.scoreDetail @allure.story("提交新国标备案申请") # 时间需要加8小时 @allure.link("http://yapi.hikcreate.com/project/32/interface/api/44776") @allure.description("接口:/pvtapi/electricBicycle/apply/newGB/submit,creator:胥键雪,autoCreator:taoke") @allure.title("{inData[testPoint]}") @pytest.mark.parametrize("inData", get_excelData(workBook, '电动车', 'newGBsubmit')) def test_newGBsubmit(self, inData): url = f"{BMCConfig().host}{inData['url']}" method = inData['method'] req_data = inData['reqData'] expectData = inData['expectData'] headers = inData['headers'] """处理""" today = datetime.date.today() if today.isoweekday() in [5, 6, 7]: today += datetime.timedelta(days=8 - today.isoweekday()) # 需要是工作日 appointDate=str(today) else: today += datetime.timedelta(days=1) # 放管服设置需提前预约一天 appointDate=str(today) print(appointDate) frameNumber = f"{random.randint(100, 999)}757890668{random.randint(100, 999)}" req_data['appointDate']=appointDate req_data['frameNumber']=frameNumber res = request_main(url, headers, method, req_data) allure.attach(f"{res}", "响应结果", allure.attachment_type.TEXT) assert res['code'] == expectData['code'] if __name__ == '__main__': for one in os.listdir('../../report/tmp'): # '-m','scoreDetail' , if 'json' in one: os.remove(f'../../report/tmp/{one}') pytest.main(['test_ElectricBicycle.py', '-s', '-m','scoreDetail' , '--alluredir','../../report/tmp']) os.system('allure serve ../../report/tmp')