【PyRestTest】高级使用

2024-02-01 22:44
文章标签 使用 高级 pyresttest

本文主要是介绍【PyRestTest】高级使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本节主要涉及PyRestTest的高级特征的详细使用,主要指:generators(生成器), variable binding(变量绑定), data extraction(数据提取), content validators(文本验证)

它们是如何组合在一起的?

在这里插入图片描述

模板和上下文

  • 测试和基准测试可以使用变量来模板化动态配置。
  • 使用基础的Python string templating进行模板化
  • 模板使用包含在上下文中的变量,而且每次测试运行或基准测试迭代都会对模板进行更新。
  • 上下文要么传递到测试中,要么在测试中创建(如果没有提供)
  • 上下文在TestSet是持久的。一旦在set中设置一个变量,该变量可以在当前set中的所有测试用例中使用。
  • 可以通过下面3个方法跳调整上下文变量:
    1. 在TestSet的config或Test中使用variable_binds进行申明并赋值
    2. 在test中使用generator binds设置变量来获取generator的值
      • generator必须在TestSet config中按名称声明才能使用它们
      • generator绑定的值在每次HTTP调用时更新
        • 一个测试用例只更新一次,一个Benchmark更新多次
      • generator绑定的变量每次在Test/Benchmar中声明后会被重新更新赋值。一旦生成器生成数值,该数值能在所有子测试用例中使用(除非这个变量与其他变量绑定)
    3. 在一个test中可以使用extract_binds对HTTP响应报文进行数据提取
      • 如果请求失败,变量中是没有设定数值的
      • 不支持在benchmark进行变量提取,因为benchmark应该是相互独立的,进行数据抽取是没有必要的
Templating(模板), Generators(生成器), Binding (绑定)示例

如果你想benchmark创建/更新一组用户,但是用户必须要有唯一的ID进行登录,你会怎么做呢?

可以使用数字序列的生成器(generator),然后把生成器生成的数值绑定到一个PUT请求benchmark的ID域中。

为了演示静态变量的绑定,如下示例对first、lastname进行了绑定,示例文本内容如下:

---
- config:- testset: "Benchmark tests using test app"# Variables to use in the test set- variable_binds: {firstname: 'Gaius-Test', lastname: 'Baltar-Test'}# Generators to use in the test set- generators:  # Generator named 'id' that counts up from 10- 'id': {type: 'number_sequence', start: 10}- benchmark: # create new entities- generator_binds: {user_id: id}- name: "Create person"- url: {template: "/api/person/$user_id/"}- warmup_runs: 0- method: 'PUT'- headers: {'Content-Type': 'application/json'}- body: {template: '{"first_name": "$firstname","id": "$user_id","last_name": "$lastname","login": "test-login-$id"}'}- 'benchmark_runs': '1000'- output_format: csv- metrics:- total_time: total- total_time: mean

当前tempate只支持请求体、请求URL、请求头。

生成器概述

下表给出了所有 generator及它们的配置元素(必须、可选以及含义):

含义在YAML的名称输出类型参数
获取宿主机的环境变量的值env_variableanyrequired: ‘variable_name’, type: string (环境变量使用不需要添加前缀( $ 或 % )**
重置环境变量值env_stringstringrequired: ‘string’, type: string(可以根据需要对环境变量中的值进行组合拼接获取需要的字符变量,获取系统环境变量需要前缀$)
类型为整形的序列number_sequenceintegeroptional: ‘start’, type: integer, default: 1 optional: ‘increment’, type: integer, default 1
随机整数(32位)random_intinteger
随机字符串random_textstringoptional: ‘character set’ OR ‘characters’, type: string, default: string.ascii_letters optional: ‘min_length’, type: integer, default: 8 optional: ‘max_length’, type: integer, default: 8 optional: ‘length’, (can either have length or min/min), type integer
随机获取给定list中的数值choiceanyrequired: ‘values’, type: array of anything
给定一个有序列表,顺序获取给定列表的值fixed_sequenceanyrequired: 'values, type: array of anything
Generators简介
env_variable

该变量名是使用宿主机定义的环境变量名。例如:如果你在shell脚本中使用宿主机的host可以通过$HOST获取,但如果使用env_variable类型的生成器,只需要在variable_name值设置为‘HOST’就可以。

{type: 'env_variable', 'string': "HOST"}
env_string

可以根据业务需要把多个系统环境变量与其他元素组合成一个字符串值。例如:

在shell脚本中: echo "$USER logged into $HOSTNAME"是这样,在env_string类型的生成器变成了这样:

{type: 'env_string', 'string': "$USER logged into $HOSTNAME"}
random_text

生成随机的字符串,需要指定下列选项:

  • 合法的字符长度:
    • length:设置一个常量,指定长度
    • min_lengthmax_length:允许生成字符串的长度范围区间
  • 使用有效的字符,可以按下面两种方法定义:
    • **characters:**指定使用生成的有效字符,characters类型为字符型。示例:characters:‘abceefj’
    • character_set: 指定使用的字符集。示例如下:character_set:string.ascii_letters.支持的字符集如下表:
<
描述文本名称来源
ASCII 码:大小写字母,不包括空格ascii_lettersPython internal
ASCII 码:小写字母,不包括空格ascii_lowercasePython internal
ASCII码:大写字母,不包括空格ascii_uppercasePython internal
数字: 0-9digitsPython internal
十六进制数字、大小写字母的组合hexdigitsPython internal
十六进制数字, 所有小写字母hex_lowerstring.digits+abcdef,
十六进制数字, 所有大写写字母hex_upperstring.digits+ABCDEF,
字母lettersPython internal, locale-dependent
小写字母lowercasePython internal, locale-dependent
八进制数字 (0-7)octdigitsPython internal
标点符合, 管道符及 !"#$%&'()*+,-./:;<=>?@[]^_`{}~punctuationPython internal
所有可打印字符包括空格printablePython internal, locale-dependent
大写字母uppercasePython internal, locale-dependent
空格whitespacePython internal, locale-dependent
URL字符(ASCII小写字母和破折号/)url.slugstring.ascii_lowercase + string.digits + ‘-’
URL Safe (RFC3986中的未保留字符)url.safestring.ascii_letters + string.digits + ‘-~_.’

这篇关于【PyRestTest】高级使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668713

相关文章

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(