
今日目标1.掌握如何使用logging实现日志收集2.能够使用jsonschema库对响应数据进行全量字段校验ihrm项目完善。获取请求头1.在 common/ 下创建文件 get_header.py2.文件中添加 代码获取请求头并测试无误from api.ihrm_login_api import IhrmLoginApi def get_header(): req_data {mobile: 13800000002, password: 123456} resp IhrmLoginApi.login(req_data) header {Authorization: resp.json().get(data)} return header if __name__ __main__: ret get_header() print(ret)3.在 scripts/ 测试脚本代码中添加 setup_class() 调用 获取请求头的方法 get_header()生成测试报告修改 pytest.ini 文件addopts 添加 参数。 --html./report/报告名.html --self-contained-html执行 pytest 命令自动生成测试报告存入 report目录中日志收集日志简介什么是日志日志也叫 Log。用来记录系统在运行过程中产生的信息变量值、参数、响应结果、错误、异常。保存到 xxx.log 文件中。搜集日志的作用分析代码定位bug。调试代码。了解系统运行的状态。分析用户行为做数据统计。日志的级别logging.DEBUG调试级别【高】logging.INFO信息级别【次高】logging.WARNING警告级别【中】logging.ERROR错误级别【低】logging.CRITICAL严重错误级别【极低】特性日志级别设定后只有比该级别 低 的日志会打印。如设定日志级别为 info。 debug 级别的日志信息不会打印。warning、error、critical 会打印日志代码实现分析日志代码无需手写实现。会修改、调用即可代码分析 步骤 # 0. 导包 # 1. 创建日志器对象 # 2. 设置日志打印级别 # logging.DEBUG 调试级别 # logging.INFO 信息级别 # logging.WARNING 警告级别 # logging.ERROR 错误级别 # logging.CRITICAL 严重错误级别 # 3. 创建处理器对象 # 创建 输出到控制台 处理器对象 # 创建 输出到日志文件 处理器对象 # 4. 创建日志信息格式 # 5. 将日志信息格式设置给处理器 # 设置给 控制台处理器 # 设置给 日志文件处理器 # 6. 给日志器添加处理器 # 给日志对象 添加 控制台处理器 # 给日志对象 添加 日志文件处理器 # 7. 打印日志 import logging.handlers import logging from config import BASE_DIR def init_log_config(filename, whenmidnight, interval1, backup_count7): 功能初始化日志配置函数 :param filename: 日志文件名 :param when: 设定日志切分的间隔时间单位 :param interval: 间隔时间单位的个数指等待多少个 when 后继续进行日志记录 :param backup_count: 保留日志文件的个数 :return: # 1. 创建日志器对象 logger logging.getLogger() # 2. 设置日志打印级别 logger.setLevel(logging.DEBUG) # logging.DEBUG 调试级别 # logging.INFO 信息级别 # logging.WARNING 警告级别 # logging.ERROR 错误级别 # logging.CRITICAL 严重错误级别 # 3. 创建处理器对象 # 控制台对象 st logging.StreamHandler() # 日志文件对象 fh logging.handlers.TimedRotatingFileHandler(filename, whenwhen, intervalinterval, backupCountbackup_count, encodingutf-8) # 4. 日志信息格式 fmt %(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s formatter logging.Formatter(fmt) # 5. 给处理器设置日志信息格式 st.setFormatter(formatter) fh.setFormatter(formatter) # 6. 给日志器添加处理器 logger.addHandler(st) logger.addHandler(fh) if __name__ __main__: # 初始化日志 init_log_config(BASE_DIR /log/sh27.log, interval3, backup_count5) # 打印输出日志信息 logging.debug(我是一个调试级别的日志) logging.info(AAA BBB CCC) logging.error(xxxx 错误。。)日志使用可修改的位置使用步骤将 loggin_use.py 文件部署到项目中。 如拷贝至 common/ 下。在 项目下 创建 log/ 用来存放生成的 xxx.log 日志文件在 项目中使用日志之前初始化日志信息指定 日志文件名【必填】、单位、单位间隔、保留文件个数。在 需要打印输出的位置使用 logging.级别(“想要输出的信息”)全量字段校验简介和安装概念校验接⼝返回响应结果的全部字段更进一步的断言校验内容字段值字段名 或 字段类型校验流程定义 校验规则json语法⽐对 响应数据 是否 符合 校验规则安装jsonschema:pip install jsonschema -i https://pypi.douban.com/simple/JSON Schema入门入门案例校验方式在线工具校验http://json-schema-validator.herokuapp.comJSON Schema Validator - Newtonsoft 【推荐】python代码校验实现步骤1 导包 import jsonschema2 定义 jsonschema格式 数据校验规则3 调⽤ jsonschema.validate(instancejson数据, schemajsonshema规则)查验校验结果校验通过返回 None校验失败schema 规则错误返回 SchemaErrorjson 数据错误返回 ValidationError案例 入门案例 # 1. 导包 import jsonschema # 2. 创建 校验规则 schema { type: object, properties: { success: { type: boolean }, code: { type: integer }, message: { type: string } }, required: [success, code, message] } # 3. 准备 待校验数据用 python语法表示的 json数据 json_data { success: True, code: 100.3, message: 操作成功 } # 4. 调用方法 进行校验 res jsonschema.validate(instancejson_data, schemaschema) # 5. 查看校验结果 print(校验结果, res)JSON Schema语法type关键字作用约束数据类型properties关键字说明是 type关键字的辅助。用于 type 的值为 object 的场景作用指定对象中每个字段的校验规则。 可以嵌套使用。案例1案例2properties嵌套required关键字作用校验对象中必须存在的字段。字段名必须是字符串且唯⼀const关键字作用校验字段值是⼀个固定值。等价于 断言中 用法pattern关键字作用指定正则表达式对字符串进行模糊匹配语法综合案例 综合案例 import jsonschema data { success: False, code: 10000, message: xxx登录成功, data: { age: 20, name: lily } } schema { type: object, properties: { success: {type: boolean}, code: {type: integer}, message: {pattern: 登录成功$}, data: { type: object, properties: { name: {const: lily}, age: {const: 20} }, required: [name, age] } }, required: [success, code, message, data] } jsonschema.validate(instancedata, schemaschema)