【第五章】jemter参数化实战

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【第五章】jemter参数化实战相关的知识,希望对你有一定的参考价值。

参考技术A 什么时候需要参数化技术

参数化技术是什么

jmeter实现参数化

单点登录:如果10个用户登录,用户名和密码不做参数化,后面的请求会将前面所有用户账号顶掉。

adduser:增加用户但手机号唯一,就需要对手机号做参数化

多点登录可以不做参数化,如果要真实的模拟用户操作,还是需要做参数化的

参数化一般用法就是将脚本中的某些输入使用参数来代替,在脚本运行时置顶参数的取值范围和规则

​ 找出需要参数化的数据

​ 准备提供给参数化需要的数据源

​ 把脚本里面的常量--变量(使用之前的数据源数据)

1、CSV 需要配置元件

​ 使用场景:账号、密码

​ token是有时效的,一般有两种方式:1. 固定时效,比如:1个月;2. 不用就时效

注释:首先要明确参数化的作用域:如果是对整个测试计划有用,将其放在测试计划下面,如果是对这个线程组有用则放在线程组下面;如果是对这个请求有用,则放在这个请求下面。
1-1 添加csv数据文件设置:

1-2 设置数据文件:

2、函数式:



示例:如果用jmeter测试,找到之前的接口,添加 - 后置处理器 - json提取器:输入token变量名,json path的语法格式: getToken

msg:token值为空?
解决方案:在请求头中添加一个token
message:客户姓名必须为中文?
解决方案:请求中添加编码格式
message:该客户手机号码已存在?
解决方案:手机号必须做参数化,通过函数助手中的__Random,设置最小值和最大值,生成表达式并拷贝,将其与写死的手机号替换

接口环境不同,使用的服务器ip就不同,我们可以“线程组 - 添加 - 配置元件 - 用户定义的变量”

发送请求后,从查看结果树中可以看到请求的密码加密了

第五章 Flask——实例化Flask的参数及对app的配置

第五章 Flask——实例化Flask的参数及对app的配置

 

一、Flask中的实例化配置

二、Flask中的对象配置

 

一、Flask中的实例化配置

比如控制模板文件夹名字

 

from flask import Flask,render_template

app = Flask(__name__,template_folder="templates")

 

那么实例化配置总共有哪些字段呢

static_folder = static,  # 静态文件目录的路径 默认当前项目中的static目录
static_host = None,  # 远程静态文件所用的Host地址,默认为空
static_url_path = None,  # 静态文件目录的url路径 默认不写是与static_folder同名,远程静态文件时复用
# host_matching是否开启host主机位匹配,是要与static_host一起使用,如果配置了static_host, 则必须赋值为True
# 这里要说明一下,@app.route("/",host="localhost:5000") 就必须要这样写
# host="localhost:5000" 如果主机头不是 localhost:5000 则无法通过当前的路由
host_matching = False,  # 如果不是特别需要的话,慎用,否则所有的route 都需要host=""的参数
subdomain_matching = False,  # 理论上来说是用来限制SERVER_NAME子域名的,但是目前还没有感觉出来区别在哪里
template_folder = templates  # template模板目录, 默认当前项目中的 templates 目录
instance_path = None,  # 指向另一个Flask实例的路径
instance_relative_config = False  # 是否加载另一个实例的配置
root_path = None  # 主模块所在的目录的绝对路径,默认项目目录

这里面,我们常用的参数有

static_folder = static,  # 静态文件目录的路径 默认当前项目中的static目录
static_url_path = None,  # 静态文件目录的url路径 默认不写是与static_folder同名,远程静态文件时复用
template_folder = templates  # template模板目录, 默认当前项目中的 templates 目录

 

 

 

 

二、Flask中的对象配置

from flask import Flask

app = Flask(__name__)  # type:Flask
app.config["DEBUG"] = True

之前在代码演示过程中,为了调试方便,我们设置了app.config["DEBUG"] = True,使其变成调试模式

精髓在于:

Flask的配置就是在 app.config 中添加一个键值对,但是你存进去的键必须是config中应该存在的,如果不再存在的话,它会默认无用,就这么放着

那么config中究竟存在多少参数呢:

{
    DEBUG: False,  # 是否开启Debug模式
    TESTING: False,  # 是否开启测试模式
    PROPAGATE_EXCEPTIONS: None,  # 异常传播(是否在控制台打印LOG) 当Debug或者testing开启后,自动为True
    PRESERVE_CONTEXT_ON_EXCEPTION: None,  # 一两句话说不清楚,一般不用它
    SECRET_KEY: None,  # 之前遇到过,在启用Session的时候,一定要有它
    PERMANENT_SESSION_LIFETIME: 31,  # days , Session的生命周期(天)默认31天
    USE_X_SENDFILE: False,  # 是否弃用 x_sendfile
    LOGGER_NAME: None,  # 日志记录器的名称
    LOGGER_HANDLER_POLICY: always,
    SERVER_NAME: None,  # 服务访问域名
    APPLICATION_ROOT: None,  # 项目的完整路径
    SESSION_COOKIE_NAME: session,  # 在cookies中存放session加密字符串的名字
    SESSION_COOKIE_DOMAIN: None,  # 在哪个域名下会产生session记录在cookies中
    SESSION_COOKIE_PATH: None,  # cookies的路径
    SESSION_COOKIE_HTTPONLY: True,  # 控制 cookie 是否应被设置 httponly 的标志,
    SESSION_COOKIE_SECURE: False,  # 控制 cookie 是否应被设置安全标志
    SESSION_REFRESH_EACH_REQUEST: True,  # 这个标志控制永久会话如何刷新
    MAX_CONTENT_LENGTH: None,  # 如果设置为字节数, Flask 会拒绝内容长度大于此值的请求进入,并返回一个 413 状态码
    SEND_FILE_MAX_AGE_DEFAULT: 12,  # hours 默认缓存控制的最大期限
    TRAP_BAD_REQUEST_ERRORS: False,
    # 如果这个值被设置为 True ,Flask不会执行 HTTP 异常的错误处理,而是像对待其它异常一样,
    # 通过异常栈让它冒泡地抛出。这对于需要找出 HTTP 异常源头的可怕调试情形是有用的。
    TRAP_HTTP_EXCEPTIONS: False,
    # Werkzeug 处理请求中的特定数据的内部数据结构会抛出同样也是“错误的请求”异常的特殊的 key errors 。
    # 同样地,为了保持一致,许多操作可以显式地抛出 BadRequest 异常。
    # 因为在调试中,你希望准确地找出异常的原因,这个设置用于在这些情形下调试。
    # 如果这个值被设置为 True ,你只会得到常规的回溯。
    EXPLAIN_TEMPLATE_LOADING: False,
    PREFERRED_URL_SCHEME: http,  # 生成URL的时候如果没有可用的 URL 模式话将使用这个值
    JSON_AS_ASCII: True,
    # 默认情况下 Flask 使用 ascii 编码来序列化对象。如果这个值被设置为 False ,
    # Flask不会将其编码为 ASCII,并且按原样输出,返回它的 unicode 字符串。
    # 比如 jsonfiy 会自动地采用 utf-8 来编码它然后才进行传输。
    JSON_SORT_KEYS: True,
    #默认情况下 Flask 按照 JSON 对象的键的顺序来序来序列化它。
    # 这样做是为了确保键的顺序不会受到字典的哈希种子的影响,从而返回的值每次都是一致的,不会造成无用的额外 HTTP 缓存。
    # 你可以通过修改这个配置的值来覆盖默认的操作。但这是不被推荐的做法因为这个默认的行为可能会给你在性能的代价上带来改善。
    JSONIFY_PRETTYPRINT_REGULAR: True,
    JSONIFY_MIMETYPE: application/json,
    TEMPLATES_AUTO_RELOAD: None,
}

以上这些Key,都可以被改写,当然他们也都是有默认值存在的,如果没有特殊情况,不要改写它的默认值

 

修改Flask配置

方式一:直接对app.config进行修改

app.config["DEBUG"] = True

方式二:使用类的方式导入

首先要有一个settings.py的文件

class FlaskSetting:
    DEBUG = True
    SECRET_KEY = "DragonFire"

然后我们在Flask的启动文件中就可以这么写

from flask import Flask

app = Flask(__name__)  # type:Flask
app.config.from_object("settings.FlaskSetting")

 

以上是关于【第五章】jemter参数化实战的主要内容,如果未能解决你的问题,请参考以下文章

第五章 调优案例分析与实战

第五章 面向对象(基础篇)

第五章:MySQL主从复制

机器学习实战第五章Logistic回归

《恶意代码分析实战》-第五章 IDA Pro(含20种必备操作技能)

KVM虚拟化实战精讲[第五章 利用virsh对虚拟机管理]