- 博客(245)
- 资源 (86)
- 收藏
- 关注
原创 修改HttpRunner源码实例
如果要修改某个第三方库,那么就不能用pip install xxx, 而要找到源码clone下来。修改版httprunner使用步骤:下载新版本 源码激活虚拟环境 source venv/bin/activate下载依赖库文件 pip install -r requirements.txt执行测试python test.py run tt01/testcases之前标准httprunner run xxx等命令,全部改为python test.py hrun xxx执行,代码全部改完后,可
2021-08-03 23:33:42 535
原创 playwright框架处理iframe类型页面点击
因此,需要先使用 page.frame_locator () 或 locator.frame_locator () 方法来创建一个 FrameLocator 对象,它可以捕获检索 iframe 和定位 iframe 中元素的逻辑。然后,可以在 FrameLocator 对象上使用 get_by_text () 或其他定位器方法来找到并点击元素。iframe 是一个在页面中嵌入另一个页面的 HTML 实体。Playwright 只能访问特定上下文中的元素,而主页面和嵌入的 iframe 的上下文是不同的。
2023-05-11 15:22:57 1152 1
原创 自动化测试监控大屏是否动态跳动
测试监控大屏是否自动刷新思路:一般成熟的自动化框架都可以截图保存,以playwright为例.计算两张截图的相似度有人已经实现了
2022-07-06 14:44:01 328
原创 几种截屏方式
1 调用win32 apiimport timeimport win32gui, win32ui, win32con, win32apidef window_capture(pic_name): hwnd = 1781894 # 窗口的编号,0号表示当前活跃窗口 # 根据窗口句柄获取窗口的设备上下文DC(Divice Context) hwndDC = win32gui.GetWindowDC(hwnd) print(hwndDC) # 根
2022-04-25 14:27:16 452
原创 一次CORS漏洞的手工验证
给项目接口做安全扫描的时候,发现有个CORS漏洞:但仅仅扫出来还不够,需要手工验证一下手工验证方式在正常的api请求处,headers加入"origin":"http://xx.xx.xx.xx", 如果接口正常返回了数据且headers里包含access-control-allow-credentials : trueaccess-control-allow-origin : http://xx.xx.xx.xx就说明这个接口确实存在CORS漏洞poc代码<html>&
2022-01-05 15:46:58 5103
原创 修复httprunner3 pytest-html报告中文乱码问题
找到 X:\Python3.X\Lib\site-packages\pytest_html\plugin.py修改此行代码:class TestResult: def __init__(self, outcome, report, logfile, config): #self.test_id = report.nodeid.encode("utf-8").decode("unicode_escape") self.test_id = re
2021-12-08 15:55:13 763
原创 Flutter - 使用Provider进行状态管理
定义Provider类: current_index_provider.dartimport 'package:flutter/material.dart';class CurrentIndexProvider with ChangeNotifier { int currnetIndex = 0; changeindex(int newIndex){ currnetIndex = newIndex; notifyListeners(); }}在main中初始化prov
2021-10-12 08:56:17 361
原创 2021-Flutter调用相册上传图片(头像)
添加权限ios版本,在info.plist中添加,防止模拟器上使用相册和相机闪退<key>NSCameraUsageDescription</key><string>cameraDesciption</string><key>NSPhotoLibraryUsageDescription</key><string>photoLibraryDesciption</string>第三方库 im
2021-09-25 09:39:08 1413
原创 接口自动化 - 生成HttpRunner需要的数据驱动文件,接口的所有字段正反用例全覆盖
由于HttpRunner是基于数据驱动的接口自动化框架,可以完美实现代码和数据分离,那么在写好接口报文后,自动化的效果直接取决于数据文件的全面性.如果要完美实现一个接口的所有字段正反用例全量覆盖,手写肯定不合适, 但可以对照接口文档,先手写出下面的excel:name=接口报文的字段名value=该字段的正常用例err=该字段的异常用例null = 为空值把用例简化成这个csv文件,测试用例评审时也更加一目了然,不用对着几十条大部分内容千篇一律的数据翻着演示给其他人看了.接下来就是怎么把上
2021-09-20 17:44:35 297
原创 本地Httprunner3使用locust的方式
如果想自己修改Httprunner3的源码,就意味着不能直接pip install httprunner,这样的话接口测试文件*_test.py就无法直接被locust复用.因为手动另外下载locust的话, 它有指定的格式,pytest文件是不符合这个格式的,还是得需要httprunner的源码来做转换.但是locust命令和startproject,hrun等命令不同,并没有被httprunner注册为参数,而是直接使用locusts -f xxx触发,不安装httprunner的话, locust
2021-09-15 20:02:12 301
原创 日志查询神器lnav使用指南
安装linux直接安装: apt-get install lnav安装包地址命令直接查看日志文件lnav 1.loglnav 1.log 2.log直方图运行 lnav 然后按 i 键切换到直方图视图。白色的是 normal,黄色 warining,红色 error,很明确就看出哪个时间点有 warning 和 error自动刷新配合 filter-in 可以实现 tail -f rmb.log | grep --line-buffer ‘failed’ 的效果。重现 bug
2021-09-11 20:45:00 2032
原创 使用python脚本测试mqtt协议接口
demo测试订阅者 hbmqtt_sub --url mqtt://mqtt.eclipseprojects.io:1883 -t /geektime/iot发布者 hbmqtt_pub --url mqtt://mqtt.eclipseprojects.io:1883 -t /geektime/iot -m Hello,World!tipsMQTT 消息采用二进制的编码格式,而不是 HTTP 协议那样的文本的表述方式。Client 在重复发送一个主题的消息时,可以从第二次开始,将主题名长度设置
2021-09-09 15:07:52 1773
原创 Httprunner3.x参数化示例
参数化文件代码import sysfrom pathlib import Pathimport pytestsys.path.insert(0, str(Path(__file__).parent.parent))from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCasefrom httprunner import Parametersclass TestCaseBattle(HttpRunner)
2021-08-31 00:23:21 497 2
原创 HttpRunner3源码分析(4) - response.py,scaffold.py,parser.py
文件response.py处理响应报文格式.文件scaffold.py创建项目脚手架.文件parser.py各种解析方法.概要导图:源码优点总结||小技巧判断是否http地址 absolute_http_url_regexp = re.compile(r"^https?://", re.I)扩展阅读无...
2021-08-19 11:19:20 297
原创 HttpRunner3源码分析(3) - utils.py,client.py,loader.py
文件utils.py一些工具类方法.文件client.py客户端相关方法,主要是封装 requests.Session.request,安全调用,输出log等, 给runner.py调用.文件loader.py各种导入文件的方法.概要导图:源码优点总结||小技巧把字典的key转为小写: {key.lower(): value for key, value in origin_dict.items()}Sentry用于监控错误,有支持Python的sdk,注册账号,填写组织就能获得
2021-08-18 10:38:21 335
原创 HttpRunner3源码分析(2) - compat.py,__init__.y,__main__.py,exceptions.py,models.py
文件compat.py提供各种处理兼容性的方法,包括让v2版本的用例能在v3版本继续运行的相关转换方法文件__init__.py定义多个内置属性文件__main__.py引入cli.py的main()方法并执行概要导图:源码优点总结||小技巧使用dict.update()方法,将list转换为dict if isinstance(raw_variables, List): # [{"var1": 1}, {"var2": 2}] variable
2021-08-17 11:23:18 425
原创 Python命令行解析工具argparse使用Demo
codeimport argparsefrom rich import printparser = argparse.ArgumentParser(description="used for test")#^ 1.可选参数parser.add_argument('--version','-v',action='version',version='%(prog)s version:0.02',help='show the version ha')parser.add_argument('--
2021-08-17 10:09:34 249
原创 Win10 PowerShell配置记录
1. 下载terminal直接从microsoft store下载2. 下载字体下载安装3. 下载新版本powershell比系统自带的版本要好,直接在这里下载4. 新版本powershell的配置安装 Powershell 插件打开刚装好的新版 powershell,逐行输入命令。# 1. 安装 PSReadline 包,该插件可以让命令行很好用,类似 zshInstall-Module -Name PSReadLine -AllowPrerelease -Force# 2. 安
2021-08-10 11:38:39 500
原创 HttpRunner3源码分析(1) - cli.py
HttpRunner3和2的区别挺大,3的底层使用pytest,2的底层是unittest.在兼容json和yaml格式测试用例的前提下,作者更鼓励使用写代码来接入.具体可以看这篇文章分析对比入口文件cli.py命令行驱动的库很容易找到入口地址. 在这个文件内,主要有以下方法:main(), 使用argparse接收用户输入的命令,决定走哪个方法,关键代码输入httprunner后,接下来的单词: if sys.argv[1] == "run": sys.exit
2021-08-03 16:17:58 936
原创 多进程,多线程,协程
基本概念多进程unix/linux操作系统提供一个fork()系统调用,调用一次,返回两次,在调用时操作系统自动把当前进程(父进程)复制了一份(子进程),然后分别在父进程和子进程内返回.子进程返回0,父进程返回子进程id.子进程调用getppid()可以拿到父进程的ID。多进程的主进程一定要写在程序入口if __name__ =='__main__':内部多线程线程是操作系统直接支持的执行单元,高级语言通常都内置多线程的支持,Python也不例外,并且,Python的线程是真正的Posix
2021-07-23 15:55:56 244
原创 在树莓派搭建APP弱网测试环境
使用facebook的atc框架.安装第三方库pip install atc_thrift atcd django-atc-api django-atc-demo-ui django-atc-profile-storage创建工程 django-admin startproject atcui
2021-07-09 15:00:39 920 2
原创 树莓派开通AP热点
1. 安装create_apsudo git clone https://github.com/oblique/create_apcd create_apsudo make install运行完后,输入 create_ap -h 命令,有内容就说明安装成功了2. 安装相关库sudo apt-get install util-linux procps hostapd iproute2 iw haveged dnsmasqsudo apt-get install -y network-manag
2021-07-09 09:44:51 773
原创 关于Dart语言中的单线程异步执行
正常情况下,一个 Future 异步任务的执行是相对简单的:在声明一个 Future 时,Dart 会将异步任务的函数执行体放入事件队列,然后立即返回,后续的代码继续同步执行。而当同步执行的代码执行完毕后,事件队列会按照加入事件队列的顺序(即声明顺序),依次取出事件,最后同步执行 Future 的函数体及后续的 then。这意味着,then 与 Future 函数体共用一个事件循环。而如果 Future 有多个 then,它们也会按照链式调用的先后顺序同步执行,同样也会共用一个事件循环。then 会在
2021-07-06 15:20:53 361 1
原创 python 赋值, 浅拷贝,和深拷贝的区别
python 赋值, 浅拷贝,和深拷贝的区别赋值=是创建了对象的一个新引用,将原有的数据对象添加一个标签. 如果原有数据对象是不可变的(基础类型),当新的对象被创建时,就会开辟新的内存位置. 如果原有数据对象是可变的(list,dict等),就会在原有对象上进行修改.a=1b=aa=2b=? #1#---a={'a': 1}b=ab['b']=2a=? # {'a': 1, 'b': 2}浅拷贝copy.copy()只拷贝对象本身,不会拷贝其内部的嵌套对象. 复杂子对
2021-06-29 09:54:35 153
原创 selenium的挑战者 - playwright简析
简介playwright支持浏览器端的录制,生成自动化脚本,支持无头跑脚本速度快,基本是selenium的好几倍,且支持浏览器异步运行自动等待API,可拦截请求,随意mock官方API点击搭建环境安装库 pip install playwright安装浏览器 python -m playwright install录制脚本示例命令行输入python -m playwright codegen,会自动弹出一个浏览器和代码文本框, 在浏览器输入www.baidu
2021-06-21 16:46:24 10050 1
原创 使用Locust进行性能测试
开篇最近因为某些不可抗拒因素:-D,不能在公司使用Loadrunner,找了一下开源的性能测试工具,决定使用Locust.什么是LocustLocust是一种易于使用的、分布式的、用户负载测试工具。它的目的是对web站点(或其他系统)做性能测试,并确定系统能够处理多少并发用户。Locust可以在测试过程中,模拟大量Locust实例会访问目标网站。每个Locust(测试用户)的行为是由自己定义的,并且可以从一个web UI中实时监控着这些进程。服务端性能测试工具最核心的部分是压力发生器,..
2021-05-31 17:41:52 1375 2
原创 在python代码中调用adb命令关闭/启动app
查某个app的包名adb -s 8a8917c9 shell pm list packages | grep 'mhxy'关闭appdef close_app(): os.system("adb -s "+ str(iphone_id)+ " shell am force-stop com.netease.mhxyhtb")启动app启动app不仅需要知道app的包名,还需要知道app的类名.相关指令是os.system("adb -s "+ str(iphone_id)+ " she
2021-05-26 14:35:17 1373
原创 Flutter获取Json数据并保存
原文源码下载步骤利用现有的设计,拷贝一个机票应用的模板app : git clone https://github.com/cybdom/flight_app_ui在lib目录下,新建一个models目录,在其中建个新文件users.dart class UsersModel { int id; String name; String userName; String email; String phone; UsersModel( this.id,
2021-05-25 14:22:37 877
原创 介绍一个在线fake平台JSONPlaceholder
开发应用程序或者测试的过程中,有时候需要获取某些json数据展示在界面,这里介绍一个非常好用的在线的json 测试数据生成平台 : jsonplaceholderJSONPlaceholder是一个免费的在线REST API,当需要一些假数据时,就可以调用它。JSONPlaceholder常用的六个方法1. /posts , 获取100个json格式数据请求地址: https://jsonplaceholder.typicode.com/posts代码示例import requestsde
2021-05-25 08:50:30 988
原创 软件测试用例设计之Pairwise算法
Pairwise算法简介Pairwise是L. L. Thurstone(29 May1887 – 30 September 1955)在1927年首先提出来的。他是美国的一位心理统计学家。Pairwise也正是基于数学统计和对传统的正交分析法进行优化后得到的产物。测试过程中,对于多参数参数多值的情况进行测试用例组织,把每个参数的所有值分别和其他参数的值做一个全量组合,就是正交分析法, 优点是测试用例覆盖率100%,缺点测试用例数量庞大,执行用例消耗的人工巨大。Pairwise (结对)算法源于对传统
2021-05-21 10:36:59 6587 1
原创 APP接口自动化加密实战
在自动化测试中经常会遇到的一个痛点就是,报文传输加密.有一些系统,从安全的角度考虑,后端是无法解析明文的,必须收到的是密文然后解密,才能做下一步操作.在测试环境,有些后端改个参数,可以实现接收明文,但是也有一些系统,必须修改大量代码,才能实现接收明文的效果,而做自动化测试的一个原则之一便是 尽量不要因为做自动化而让开发修改代码 .今天以我司手机银行app为例, 讲解报文加密问题解决的方法.加密类型分析一般手机银行的APP加密可以分为: 登录密码加密, 报文传输加密, 支付密码加密.登录密码加
2021-05-19 16:07:21 1098
原创 使用excel在自动化测试平台批量生成用例示例
在自动化测试工作中,测试人员所花时间最多的地方就是编写自动化测试用例,而把自动化测试用例一条一条写入自动化平台更是耗时巨大,把机械重复的事情自动化,本来就是自动化测试人员的职责,那么这件重复而又繁琐的事情当然该用自动化的方式解决.分析公司自动化平台我司做接口自动化采用的是阿里云效平台,自己手动在平台录入一条接口自动化案例,通过charles抓包可以看到,客户端(浏览器)与服务端之间的通信报文是明文. 这就太好了,不需要去解决报文加密的问题.设计思路通过人工录入测试用例可以看到,此自动化测试平台每
2021-05-19 15:27:18 923
原创 使用自动化处理某手游四宫格拼图问题
今天玩游戏的时候碰到个四宫格的小游戏,想试试能不能通过自动化的方式自动完成。游戏本身逻辑很简单,就是四个小块拼成一个完整图案,但让它自动点击完成的话,这个思考的过程比较有意思。游戏图: 初始四个无顺的块。解决思路:玩到所有的图,保存下来,后面自动识别 – 基本上不现实,鬼知道有多少图 = =手动多玩几次,找到规律。通过多次拼图,可以发现,每个完整的图,最终结果都会存在于四宫格中间,也就是说,正确的图案会有如下规律:左上角小块: 左上角,右上角,左下角, 这三个地方肯定是天蓝色背景。右上
2021-05-19 09:39:16 756 1
原创 从0开始构建一个有服务APP
1. 创建服务器数据库登录服务器,确认是否装好了sqlite3,输入命令 sqlite3如果未安装,则安装sqlite3: apt-install sqlite3建立数据库: sqlite3 practiceServer.db检查是否成功 :sqlite> .databases main: /root/practiceServer.db建立数据表:CREATE TABLE TIKU(ID INTEGER PRIMARY KEY AUTOINCREMENT,TITLE
2021-05-17 14:16:20 322
原创 adb通过wifi连接手机
准备工作把手机通过数据线连接pc,执行命令:adb -s 18bcxxx tcpip 5555 ,其中18bcxxx是手机序列号,通过adb devices可以查到打开手机shell adb -s 18bcc735 shell,赋权限:chmod 775 /data/local/tmp/atx-agent启动atx-agent:/data/local/tmp/atx-agent server -d (添加-d表示在后台启动)接入操作把手机和pc连入同一个wifi命令行连接 adb
2021-05-14 11:46:50 947
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人