一、 httpRunnerHttpRunner : 一款面向 HTTP(s) 协议的通用测试框架,只需要编写和维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
充分复用优秀的开源项目,不追求重复造轮子,而是将强大的轮子组装。
遵循 约定大于配置 的准则,在框架功能中融入自动化测试最佳工程实践。
追求投入产出比,一份投入即可实现多种测试需求。
1. 特征
支持以 YAML/JSON 格式定义测试用例
支持响应验证
支持初始化清除机制
支持套件级别的用例管理
支持 Pytest 命令(hrun 底层封装的 pytest)
支持 allure 生成测试报告
支持 性能测试 (底层 Locust)
2. 主流版本差异
二、 HttpRunner 安装httpRunner 使用 python 开发, 支持 Python 3.6 + 和大多数操作系统
安装:
1pip install httpRunner
验证:
123httprunner -Vhrun -V
五大核心命令:
httprunner : 主命令,用于所有功能
hrun : 别名 ...
一、 httprunner 用例变量1. 配置变量(config variables)
用于数据解耦 —- 字典类型
定义在 config 或者 teststep 中
变量在引用时,不使用函数引用,可以不加大括号 {}
用例级别(config 中 配置)方式 1:直接 指定 参数
123456789101112131415161718192021222324config: name: 登录 base_url: http://120.55.190.222:7080 verify: false variables: # 用例变量 --- 字典类型 user: auto # 方式 1:直接指定参数的方式 pw: sdfsdfsdf export: # 返回测试步骤中提取的变量 --- 列表类型 - cookieteststeps: - name: 登录 request: method: POST url: /api/mgr/loginReq data: username: ${user} ...
一、 数据库配置1. 搭建 MySQL 数据库数据库搭建(🚀CentOS 8 搭建 MySQL 8)
2. 创建数据库1CREATE DATABASE `course_autotp` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
3. 安装 pymysqlclient 模块123# 链接 mysql 数据库需要此模块,此模块安装不了的,参考附录的方法pip install mysqlclient
4. 配置 数据库参数1234567891011121314DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'course_autotp', # 数据库名称 'USER': 'root', # 用户名 ...
一、 数据库查询强化训练1. 字段条件查询字段查询是指如何指定 SQL WHERE 子句的内容。
它们用作QuerySet的filter(), exclude()和get()方法的关键字参数。
其基本格式是:field__lookuptype=value,注意其中是 双下划线。
默认查找类型为 exact(精确匹配)。
lookuptype 的类型有:
Django 的数据库 API 支持 20 多种查询类型,下表列出了所有的字段查询参数:
字段名
说明
exact
精准匹配
iexact
不区分大小写的精准匹配
contains
包含匹配
icontains
不区分大小写的包含匹配
in
在 。。。之内的匹配
gt
大于
gte
大于等于
lt
小于
lte
小于等于
startswith
从开头匹配
istartswith
不区分大小写的从开头匹配
endswith
从结尾处匹配
iendswith
不区分大小写的从结尾处匹配
range
范围匹配
date
日期匹配
year
年份匹配
iso_yea ...
一、 资源的增删改查1. 新增资源1234567891011121314151617181920212223# views.py@api_view(['GET', 'POST']) # 允许的请求方法def request_list(request, format=None): # 查询数据 if request.method == 'GET': # 构造序列化器 serializer = RequestSerializer(Request.objects.all(), many=True) # 返回 json 格式数据 # safe=False 是为了支持 {} 以外的 python 对象转 json return Response(serializer.data) # 将 python 原生格式转成 json 数据 # 新增数据 --- POST elif request.method == 'P ...
一、 自定义接口规范(渲染器)1. 渲染器的基本原理
序列化在返回数据后并不是直接做为响应数据,而是经过渲染器的渲染,生成不同格式的响应内容 。
重构渲染器就是重写父类渲染器的 render 方法 。
1render(self, data, accepted_media_type=None, renderer_context=None)
data : 响应数据(序列化器的.data 属性),等同于 renderer_context[“ response “].data 的值
accepted_media_type=None : 可选的。如果提供,这是由内容协商阶段确定的所接受的媒体类型。
根据客户端的 Accept: 头,这可能比渲染器的 media_type 属性更具体,可能包括媒体类型参数。例如 “application/json; nested=true” 。
renderer_context=None : 可选的。如果提供,这是一个由 view 提供的上下文信息的字典。
默认情况下这个字典会包括以下键: view , request , response , args , ...
模型关联关系
用例和项目之间的关联可以直接通过 config,因为 config 是套件和用例的扩展,相当于用例和套件本身 。
一、 模块的包管理1. 创建模型包如果模型过多时,需要把模型分别存储。
在应用中创建一个名为 models 的包,将所有的模型文件全部存放在 该文件夹下, 删除原来的 models.py 文件。
2. 创建 模型文件在 __init__.py 文件中,要使用 显示明确的方式导入每个模型,这样不会让命名混淆,便于可读。
123456# sqpt/models/__init__.pyfrom .hr3 import Request, Case, Config, Suite, Stepfrom .auth import Userfrom .base import CommonInfofrom .mgr import Environment, Project
hr3.py 存放所有核心数据模型
mgr.py 存放所有项目管理相关模型
123456789101112131415161718192021222324252627282930313233343536373 ...
一、 用户注册注册流程:
1. 注册序列化器123456789101112131415161718192021222324252627282930# serializers.py# 注册序列化器class RegisterSerializer(serializers.ModelSerializer): # admin_code 不在user 模型字段中,需要单独定义 admin_code = serializers.CharField(default='') # 字符串类型 class Meta: model = User fields = ['username', 'password', 'email', 'phone', 'realname', 'admin_code'] # 额外的验证 --- 覆盖父类的方法 def validate(self, attrs): # attrs ...
一、 序列化器中的类属性字段序列化 中所定义的 类属性 字段,一般情况下与 模型类 字段 相对应
默认情况下,这些类属性字段既可以进行序列化输出,也可以进行反序列化输入
不需要输入(反序列化)、输出(序列化)的字段,则不需要定义,定义的字段 则必须出现在 fields 列表中
只需要反序列化输入,则定义 write_only = True
只需要序列化输出,则定义 read_only = True
响应的参数如果是多个查询集,需要在 JsonResponse() 中传参 many=True
label:当前字段在前端的 api 页面中所显示的字段名称
allow_null = False:当前字段是否允许传 None,默认是 False(必填字段 False,反之则 True)
allow_blank = False:当前字段是否运行为空,默认是 False(必填字段 False,反之则 True)
required=False:当前字段允许不传,默认是 True(必填字段 True,反之则 False)
二、反序列化_校验机制调用序列化器对象的 is_valid() 方法,校验前 ...















