自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 问答 (1)
  • 收藏
  • 关注

转载 docker+Locust+Prometheus+Grafana实现性能监控平台

原文参考:https://testerhome.com/topics/24873通过实现Locust的prometheus的exporter,将数据导入到proemtheus,然后由grafana进行数据展示。什么是proemtheus,请转prometheus什么是Grafana,请转grafanaExporter编写需要拓展一个web端接口/export/prometheus ,让prometheus根据配置定时拉取Metric信息,这里需要用到Prometheus

2021-08-01 20:53:05 1301 2

原创 自定义Locust统计信息

failure():将响应报告为失败success():将响应报告为成功 with self.client.get("/web/users/details", catch_response=True, name='users/details') as response: # print(f'这是第{i}个用户发的请求{j}:{response.text}') if response.status_code == 401:

2021-08-01 20:33:41 527

原创 Locust自定义负载策略

在Locust中可直接定义一个继承LoadTestshape类的类,有则自动启动。在该类中定义tick()方法,返回用户数user_count和产生率spawn_rate的元组,如果返回None则停止测试 通过get_run_time()方法获取测试运行时间,使用此方法控制压测时间基于时间峰值策略# 基于时间峰值策略: 每秒生成10个用户,持续时间60sclass TimePeadShape(LoadTestShape): # time_limit设置整个压测过程为60秒 t

2021-08-01 20:32:49 474

原创 Locust Events 事件钩子

目录test_start&test_stopinit_command_line_parserinitspawning_completerequest_failurerequest_successrequesttest_start&test_stoptest_start和test_stop事件只在locust主节点中触发执行@events.test_start.add_listenerdef on_test_start(**k...

2021-08-01 20:29:34 988 1

原创 Locust集合点

模拟一定数量的用户,同时并发请求。from gevent._semaphore import BoundedSemaphore# 创建集合点all_locusts_spawned = BoundedSemaphore()all_locusts_spawned.acquire()# 注册事件@events.spawning_complete.add_listenerdef on_hatch_complete(**kwargs): all_locusts_spawned.re.

2021-08-01 20:23:13 394

原创 Locust测试数据参数化

目录全局数据非全局数据常见场景:全局数据同一份数据,随机取数同一份数据,顺序取数每个worker节点拥有独立的一份数据 & 不重复通过init事件注册监听,可结合init_command_line_parser事件配置全局数据,数据针对worker独立唯一。def work_id_data(): """队列获取作品ID数据""" # work_ids = queue.Queue() with open('work_id.t...

2021-08-01 20:21:09 610

原创 Locust V1.5.3压测websocket接口

import jsonimport loggingimport reimport timeimport geventimport websocketfrom locust import events, User"""自定义websocket客户端"""header = { 'Accept-Encoding': 'gzip, deflate, br', 'Connection': 'keep-alive', 'Content-Type': 'application

2021-06-29 22:53:47 742 1

原创 docker部署django项目实践

项目目录如下:django_test |--compose/ |--mysql/ |--mysql.conf |--nginx/ |--Dockerfile |--log |--nginx.conf |--ssl |--djangosite/ |--apps/ |--djangosite/ |--Dockerfile |--manage.py

2021-06-20 16:42:32 249

原创 docker-compose

docker-compose简介安装Compose命令说明常用命令Compose模版文件简介允许用户通过一个单独的 docker-compose.yml 模板文件 (YAML 格式)来定义一组相关联的应用容器为一个项目(project)。Compose 中有两个重要的概念:服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在 dockercompose.yml 文件中定义。安装s

2021-06-20 16:36:32 190

原创 docker网络配置

docker网络配置外部访问容器容器互联新建网络连接容器使用docker-compose连接多容器外部访问容器要让外部可以访问容器应用,可以通过 -P 或 -p 参数来 指定端口映射。使用 -P 参数:Docker会随机映射一个端口到内部容器开放的网络端口可以通过docker container ls命令可以看到本地主机端口映射到容器端口docker run -d -P myapp python app.py使用 -p 参数:指定一个端口绑定一个容器# 格式 -p hostPort:

2021-06-20 15:39:24 122

原创 docker数据管理--Volume数据卷

docker数据管理数据卷常用命令数据卷数据卷是一个可供一个或多个容器使用的特殊目录,有以下特性:数据卷 可以在容器之间共享和重用对 数据卷 的修改会立马生效对 数据卷 的更新,不会影响镜像数据卷 默认会一直存在,即使容器被删除常用命令# 创建数据卷docker volume create my-vol# 查看所有的数据卷docker volume ls# 删除数据卷docker volume rm <volume_name># 清除无用的数据卷docker

2021-06-20 14:54:09 85

原创 docker容器常用命令

docker容器常用命令# 新建并启动docker run ubuntu:14.04 /bin/echo 'hello world'# 启动容器且允许用户交互docker run -it ubuntu:14.04 /bin/bash#启动已终止的容器docker container start# 过添加 -d 参数来实现后台运行容器docker run -d ubuntu:14.04 /bin/echo 'hello world'# 查看容器日志docker container

2021-06-20 14:38:53 71

原创 docker镜像基本知识

docker镜像基本知识镜像拉取docker run 命令参数说明镜像列表删除镜像使用Dockerfile定制镜像FROM指定基础镜像RUN 执行命令COPY 复制文件/ADD 更高级的复制文件CMD 容器启动命令ENTRYPOINT 入口点ENV 设置环境变量WORKDIR 指定工作目录镜像拉取# 命令格式docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]# 镜像拉取 docker pull ubuntu:16.04 # 运行 do

2021-06-20 12:36:32 200

原创 docker简介&安装

简介总之,是个好东西,是一种新兴的虚拟化方式,一次创建或配置,任意地方正常运行。Docker包括三个基本概念:镜像(Image)容器(container)仓库(repository)Docker镜像对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。Docker容器镜像( Image )和容器( Container )的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像

2021-06-20 11:54:43 187

原创 六、测试报告

测试报告的呈现是基于Allure,具体呈现如下图:

2021-05-20 00:29:19 89

原创 五、用例执行

实现各个环境切换,一套脚本只要调通了,基本接口没有变动,可以大大的降低测试成本,主要用的是argparse库。代码如下:#!/usr/bin/python# -*- coding: UTF-8 -*-# @Author :zaygee# @time :2020/12/3 17:17# @file :runtest.pyimport argparseimport shutilimport sysimport timefrom shutil import copy

2021-05-20 00:27:45 234

原创 四、用例数据共享

问题1:接口响应参数提取,并应用于下个请求?同一个接口参数共享减少多余的接口调用?解决问题:利用conftest.py全局配置文件在pytest中的特性 + globals()函数conftest配置文件实现不同接口数据共享这里我们利用pytest的conftest全局配置文件,定义我们需要的接口及返回提取的数据。例如我们有以下场景:实现获取作品详情的接口自动化,根据实际的业务场景,需要先保存作品,才能获取到该作品的详情。那么我们在conftest文件定义保存接口及返回获..

2021-05-20 00:26:07 217

原创 三、用例组织&用例设计

概要这里我们测试一个接口有两个文件。一个是接口定义、一个测试用例集。接口定义示例每个接口定义一个类,url和请求参数为类方法,方便复用!# -*- coding: utf-8 -*-## file: coll_work.py# Author: zaygee# Date: 2021/5/13from config import envclass CollWork: """设置该作品为协作作品""" @classme

2021-05-20 00:22:26 188

原创 二、请求方法封装

这里主要是为了结合输出日志,及测试报告的呈现普通接口请求方法封装#!/usr/bin/python# -*- coding: UTF-8 -*-# @Author :zaygee# @time :2020/12/3 16:30# @file :api_method.pyimport jsonimport osimport allureimport jsonpathimport requestsfrom common import loggerfr.

2021-05-20 00:18:46 153

原创 一、接口自动化框架概要

项目技术选型原本想使用的httprunner3,鉴于其一个case就是一个py文件,仅个人短浅的见识觉得不是很方便(文件太多了岂不)。。又有测websocket接口的需求,于是乎想把它们整一起!所以打算自己搭一个练练手,主要是基于Pytest + Requests(Websocket) + Allure。项目结构|-- common/|-- |-- sql_info.py # 数据库连接信息|-- |-- api_method .py # 封装requests库方法

2021-05-20 00:16:19 248 1

原创 什么是消息中间件?

具体详情戳戳语雀吧hhhh~https://www.yuque.com/zaygee/gnpl98/fw7pgx

2020-08-08 18:43:00 107

原创 从零到精通--基于pytest的UI/接口自动动实战全集

从零开始深入pytest的世界!个人实战总结:https://www.yuque.com/zaygee/pytest

2020-07-09 00:08:38 778

原创 httprunner—parameters参数化数据驱动

如何实现参数化数据驱动:httprunner自2.0之后,只支持在testsuite中实现参数化驱动,使得测试用例更加的纯粹使用方式:新建一个testsuite,testsuite中引用需要参数化的测试用例!独立参数:当参数列表比较小,我们可直接在YAML\JSON文件中指定参数列表内容,具体格式如下:user_id,即为我们实现参数化的参数,执行用例会产生三条用例,分别为user_id为1132、1131、1130config: name: testcase des.

2020-07-05 19:18:21 731

原创 httprunner—参数关联-extract

应用场景&参数关联场景一:假设我们需要查看某个用户的个人信息,一般情况下我们需要先登录这个用户才能查看用户的个人信息,在接口自动化测试中,一般可以通过获取登录接口的token,在请求用户信息接口的时候带上这个token来实现“登录并查看用户个人信息”,这时候extract就发挥作用了,通过请求登录接口,提取登录token,将登录token写入查看用户接口。下面上实例:/api/get-token 获取到的token,通过变量$token 被 /api/users/$user_..

2020-07-05 19:16:15 690

原创 httprunner—validate校验

httprunner的response.py源码中定义了校验规则eq:等于ne:不等于def get_uniform_comparator(comparator: Text): """ convert comparator alias to uniform name """ if comparator in ["eq", "equals", "equal"]: return "equal" elif comparator in ["lt", "l

2020-07-05 19:14:24 632

原创 httprunner—环境变量.env

1.设置环境变量在linux上使用export命令,windows系统中使用set命令zaygee@zaygee:/mnt/testapi$ export UserName=adminzaygee@zaygee:/mnt/testapi$ echo $UserName2.通过.env文件设置环境变量默认情况下,在自动化测试项目的根目录中,创建 .env 文件,并将敏感数据信息放置到其中,存储采用 name=value 的格式,若需加载不位于自动化项目根目录中的...

2020-07-05 19:12:58 2727

原创 httprunner—项目组织&用例组织、分层

1.快速创建项目这里类似django里面可以快速创建一个项目目录可以通过命令:hrun --startproject [项目名称]2.项目组织快速创建的项目目录如上图所示:yml/json文件:测试用例文件debugtalk.py:存储项目中逻辑运算辅助函数.env:存储项目环境变量,通常用于存储项目敏感信息.csv:项目数据文件,用于进行数据驱动reports:默认生成测试报告的存储文件夹3.用例组织测试用例集(testsui...

2020-07-05 19:11:01 438

原创 什么是HttpRunner?

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求核心特性继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求采用 YAML/JSON 的形式描述测试场景,保障测试用例描述的统一性和可维护性借助辅助函数(debugtalk.py),在测试脚本中轻松实现复杂的动态计算逻辑支持完善的测试用例分层机制,充分实现测试用例的复用测试前..

2020-07-05 19:05:54 329

原创 python之魔术方法

python之魔术方法构造函数 是一种特殊的方法。主要用来在创建对象时初始化对象析构函数析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作构造函数__init__() 实例化对象后自动触发,在__new__之后执行,且无返回值构造函数__new__()实例化对象时触发,在__init__之前执行,参数:cls必填,代表要实例化的类返回值:...

2020-07-05 11:52:00 84

原创 python之闭包

函数闭包一般函数执行结束时该函数的局部变量会消失,假如,我们希望先保留函数中的临时局部变量,这时候就可以用上闭包了,闭包其实就是能够读取其他函数内部变量的函数,闭包实际就是python装饰器的原理我们在开发中能尽量避免使用全局变量的就尽量避免使用。因为不同模块,不同函数都可以自由的访问全局变量,可能会造成全局变量的不可预知性。闭包避免了使用全局变量,此外,闭包允许将函数与其所操作的某些数据(环境)关连起来。而且使用闭包,可以使代码变得更加的优雅形成闭包的条件:1.在一个外..

2020-07-05 11:47:27 125

原创 你不得不知道的TCP的三次握手和四次挥手!

详情见:https://www.yuque.com/zaygee/tvg571/imghbh

2020-06-16 14:41:00 150

原创 面试必知------post和get请求的区别

详情见语雀:https://www.yuque.com/zaygee/tvg571/pnyqpr

2020-06-10 22:36:18 1898

原创 python之迭代器和生成器\yield关键字

详情见语雀:https://www.yuque.com/zaygee/xrp5b2/ali5by

2020-06-07 21:28:43 153

原创 python之字典操作

详情见语雀:https://www.yuque.com/zaygee/xrp5b2/criti3

2020-06-07 21:28:09 112

原创 python之列表操作

详情见语雀:https://www.yuque.com/zaygee/xrp5b2/criti3

2020-06-07 21:27:27 134

原创 HTTP状态码

详情见语雀:https://www.yuque.com/zaygee/tvg571/xikxs0

2020-06-01 22:55:52 104

原创 HTTP报文详解

详情见语雀:https://www.yuque.com/zaygee/tvg571/qh84ze

2020-06-01 22:55:18 118

原创 简单的HTTP协议

详情见语雀:https://www.yuque.com/zaygee/tvg571/glaqp0

2020-06-01 22:54:18 124

原创 了解WEB及网络基础

详情见语雀:https://www.yuque.com/zaygee/tvg571/wndccr

2020-06-01 22:53:44 111

原创 appiumLibrary之常用关键字

详情见语雀:https://www.yuque.com/zaygee/robotframework/dgn8nh

2020-05-29 12:54:19 216

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除