# 作者:  taoke
# 时间: 2021/5/6 21:10
# 编码: #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 BmyConfig

@allure.epic("营运车企业端")
@allure.feature("登录模块")
class TestLogin():
    workBook = xlrd.open_workbook('test_case_data/bmy/bmy_case.xlsx')

    @allure.story("登录")
    @allure.title("登录认证")
    @allure.testcase("http://yapi.hikcreate.com/")
    @allure.description("url:/auth/login 。。。。")
    @pytest.mark.parametrize("inData", get_excelData(workBook,'登录模块', 'Login'))
    def test_login(self,inData):
        url = f"{BmyConfig().test_host}{inData['url']}"
        method  = inData['method']
        req_data = inData['reqData']
        expectData= inData['expectData']
        headers = inData['headers']

        """处理"""
        req_data['grant_type'] = "passwordImageCode"                         # 请求体中的固定值
        authorization = BMY().get_authorization()                            # 获取当前时间戳的Authorization
        headers["Authorization"] = authorization
        password_Encrypted = BMY().pwd_encrypted(req_data['password'])       # 密码加密
        req_data['password'] = password_Encrypted
        imageinfo = BMY().get_imageCode(req_data['username'], req_data['password'])     # 获取图片信息
        req_data['imageId'] = imageinfo[0]
        req_data['imageCode'] = imageinfo[1]

        """请求"""
        res = request_main(url, headers, method, req_data)

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


        """ 请求和断言若不使用通用方法
        # res = requests.post(f"http://testyun.banmago.com/api{url}", data=req_data, headers=headers)
        # print(res.json())
        # assert res.json()['code'] == expectData['code']
        """



if __name__ == '__main__':
    for one in os.listdir('../../report/tmp'):  # 列出对应文件夹的数据
        if 'json' in one:
            os.remove(f'../../report/tmp/{one}')
    pytest.main(['test_login.py', '-s', '--alluredir', '../../report/tmp'])
    # # 启动默认浏览器打开报告
    os.system('allure serve ../../report/tmp')