- 博客(239)
- 资源 (21)
- 问答 (1)
- 收藏
- 关注

原创 Python从0到1学习之路
书籍推荐编程入门零基础入门:《Python编程 从入门到实践》需要有其他编程语言基础:《Python基础教程(第三版)》学习笔记基础语法1、序列2、字符串:格式化语法 、 常用方法3、字典4、循环5、函数6、类7、模块...
2020-03-28 18:07:00
449
原创 编写移动端测试用例的一些思路
文章目录1.为什么要做好测试用例设计?2.好的测试用例设计的共性?3. 移动端测试设计—面向问题发现的测试全面性组织方式3.1 基本功能测试3.2 边界分析测试3.3 存储测试3.4 性能测试3.5 压力测试3.6 兼容性测试3.7 中断功能测试3.8 交互功能测试4. 移动端测试设计的实践经验5 总结5.1 UI体验5.2 页面操作5.3 不同场景下的页面操作5.4 页面数据获取和展现在聊移动APP测试用例设计之前,我请大家先思考如下2个问题:第一,我们为什么要做好测试用例设计?第二,好的测试用例
2021-10-07 10:08:17
887
原创 笔记8:商品分类【Vue实战项目:电商管理系统(Element-UI)】
文章目录1 样式1.1 设置路由1.2 完成表格区域展示1.3 实现分页功能1.4 实现添加分类功能1.4.1 完成弹窗绘制1.4.2 完成提交添加分类功能1.4.3 弹窗关闭时,重置数据1.5 实现删除功能1.6 实现修改分类名称功能1 样式1.1 设置路由创建商品分类页面../components/goods/Cate.vue,并添加一些基本的元素<template> <div> <!-- 面包屑导航 --> <el-bread
2021-10-04 09:29:33
2331
原创 vscode 云同步环境配置
文章目录配置github创建gist token创建gist仓库下载插件配置插件同步配置快捷键当更换一台设备后,vscode的插件,配置又得重新配置一遍,十分麻烦。使用Settings Sync插件可以云同步本地的vscode环境,当你需要在其它的电脑工作时,就可以一键同步环境了。配置github使用gitHub开通并创建一个gist(代码片段管理服务)来保存环境配置。创建gist tokentoken的作用能帮助我们就在vscode中使用自己的私有令牌访问自己的保存在gist上的配置;点
2021-10-03 16:17:12
2185
转载 阿里研究员:软件测试中的18个难题
原文:阿里研究员:软件测试中的18个难题十多年前我在上一家公司的时候看到过内部有个网站有一个Hard Problems in Test的列表,上面大概有三四十个问题的样子,是各个部门的测试同学提供的。但可惜后来那个list失传了,我很后悔自己当时没有保存一份。后来很多次我都想要找到那份list,因为上面列的那些问题指出了测试专业在自身专业性上的巨大发展空间。那份list上的问题让当时的我相信,软件测试这件事情本身的难度一点都不亚于软件开发,甚至可能更难一点。如果今天要重建这么一份Hard Probl.
2021-09-24 10:15:43
209
转载 Android 流畅度评估及卡顿定位、优化
转载:在路上的博客:Android 流畅度评估及卡顿优化导言:本文主要是关于 Android 流畅度和卡顿优化的全方位介绍,算是对 2020 部分工作的总结。文章目录1、渲染和流畅概念(1)为什么是 60fps 或 16ms?(2)关于渲染原理2、卡顿的标准(1)通用应用界面卡顿标准(2)游戏应用界面卡顿标准(3)为什么 FPS 无法判断是否卡顿?3、卡顿评估(1)如何获取丢帧信息?聚合帧统计信息精确的帧时间信息关键参数说明:(2)如何判断是否卡顿?通用应用卡顿评估游戏应用卡顿评估4、卡顿定位工具和高效
2021-09-05 19:56:30
2493
转载 走出回归测试困境,爱奇艺精准测试体系建设
原文:https://mp.weixin.qq.com/s/QJjdAp-yeXN5ICdWai0HTg01 为什么要做精准测试?精准测试是为了解决回归测试的质量和效率问题。在具体的业务中,产品功能的迭代、缺陷修复等等是极为常见的需求场景,但这些看似微小且常见的改动都有可能会对产品庞大的历史功能产生影响,所以需要通过回归测试进行质量保障。回归测试在多个场景都可能会被引入,除上文提到的两种外,测试完成之后需求发生变更、合并代码上线阶段、客户端封版之前的集成测试阶段等等都会涉及。
2021-08-24 22:04:05
525
原创 v-model和:model的区别
vue的模板采用DOM模板,也就是说它的模板可以当做DOM节点运行,在浏览器下不报错,绑定数据有三种方式,一种是插值,也就是{{name}}的形式,第二种是v-bind,还有一种是v-model。{{name}}的形式比较好理解,就是以文本的形式和实例data中对应的属性进行绑定。v-modelv-model多在表单中使用,在表单控件或者组件上创建双向绑定,根据控件类型选择正确的方法更新元素,可以绑定text、radio、checkbox、selected。:model:model是[v-bind]
2021-07-26 10:57:17
2164
原创 笔记7:权限管理功能【Vue实战项目:电商管理系统(Element-UI)】
文章目录1 权限列表1.1 通过路由展示权限列表组件1.2 调用API获取权限列表的数据1.3 渲染权限列表UI结构2 权限管理2.1 绘制基本布局结构并获取列表数据2.2 渲染角色列表数据2.3 通过第一层for循环渲染一级权限2.4 渲染二级和三级权限2.5 美化角色下权限的UI结构2.6 完成删除角色下指定权限的功能3 分配权限3.1 弹出分配权限对话框并请求权限数据3.2 配置并使用el-tree树形控件3.3 加载当前角色已有的权限3.4 调用API完成分配权限的功能分配角色1 权限列表1.
2021-07-25 21:18:56
2309
12
原创 笔记6:用户操作【Vue实战项目:电商管理系统(Element-UI)】
文章目录1 添加用户1.1 添加用户的对话框1.2 添加用户的表单1.3 自定义邮箱和手机号的校验规则1.4 实现添加表单的重置操作1.5 实现添加用户前的表单预校验1.6 调用API接口完成添加用户的操作2 修改用户2.1 完成编辑弹窗的绘制2.2 提交表单完成用户信息的修改3 删除用户1 添加用户1.1 添加用户的对话框渲染弹窗addDialogVisible需要定义成<!-- 添加用户对话框 --><el-dialog title="提示" :visible.sy
2021-07-20 23:15:03
361
1
原创 笔记5:主页布局-用户列表【Vue实战项目:电商管理系统(Element-UI)】
文章目录1 整体布局2 完成用户列表2.1 通过路由的形式展示列表组件2.2 在sessionStorage中保存左侧菜单的激活状态2.3 绘制用户列表组件的基础布局结构2.4 获取用户列表数据2.5 使用el-table组件渲染基本的用户列表2.6 添加索引列2.7 通过作用域插槽渲染操作列2.7 通过作用域插槽渲染操作列2.8 实现分页效果2.9 修改用户状态2.10 实现搜索功能1 整体布局2 完成用户列表2.1 通过路由的形式展示列表组件创建Users页面:/components/use
2021-07-17 20:35:23
1430
9
原创 启动mysql报错:ERROR! The server quit without updating PID file
原因换了新mac后,使用迁移助理迁移数据,迁移完成后,启动mysql报错:▶ mysql.server start ERROR! The server quit without updating PID file (/usr/local/var/mysql/wllMacBook-Pro-2.local.pid).解决方案彻底删除原来的mysql,重装brew remove mysqlsudo rm -rf /usr/local/var/mysqlbrew install mysql
2021-07-14 16:38:54
353
原创 笔记4:主页布局-侧边栏【Vue实战项目:电商管理系统(Element-UI)】
文章目录1 整体布局2 完成主页-侧边栏2.1 实现基本的主页布局2.2 美化主页header区域2.3 实现导航菜单的基本结构2.4 通过axios拦截器添加token令牌2.5 获取左侧菜单数据2.6 通过for循环渲染左侧菜单2.7 优化右侧菜单展示2.8 实现侧边栏折叠与展开效果2.9 首页路由的重定向效果2.10 侧边栏路由链接改造1 整体布局2 完成主页-侧边栏2.1 实现基本的主页布局在 element ui 官网 上查找合适的布局容器Home.vue<template
2021-07-12 21:43:16
2428
11
原创 笔记3:登录/退出流程【Vue实战项目:电商管理系统(Element-UI)】
文章目录1 登录概述1.1 登录业务流程1.2 登录业务的相关技术点2 token原理分析3.1 创建分支3.2 删除初始项目不必要的文件3.3 创建登录组件3.3.1 创建登录页面3.3.2 创建登录页面底色3.3.3 创建登录框底色3.3.4 绘制头像3.3.5 绘制输入框和按钮3.3.6 表单数据绑定3.3.7 表单数据验证3.3.8 实现表单的重置功能3.3.9 实现登录前表单数据的预校验3.3.10 配置axios发起请求3.3.11 创建弹窗提示3.3.12 获取并存储token3.3.13 设
2021-07-03 12:45:29
1050
2
原创 笔记2:后台项目的环境安装配置【Vue实战项目:电商管理系统(Element-UI)】
mysql配置安装并启动本地mysq,导入mydb数据安装node环境node官网下载,或者使用n管理node环境配置项目相关信息下载后端代码git clone https://gitee.com/half-half/vue_api_server安装依赖npm install 启动项目node app.js[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I0LEupod-1624703221661)(evernotecid://96C8429
2021-06-26 18:27:12
349
原创 n模块管理多个版本的node.js
安装homebrew方式brew install ngithub方式curl -L https://git.io/n-install | bashnpm如果本地已经有node了,则npm install -g n常用命令列出可以安装的版本# 列出最新的版本n ls-remote# 列出11.x的版本n ls-remote 11安装版本# 安装最新正式发布版本sudo n latest# 安装最新的长期支持正式发布版本sudo n lts# 安装指定
2021-06-26 16:31:44
1447
原创 笔记1:项目初始化【Vue实战项目:电商管理系统(Element-UI)】
文章目录环境准备安装nodejs安装vue安装vue-cli脚手架构建工具通过Vue脚手架创建项目配置Element-UI组件库配置axios环境准备安装nodejs在官网直接下载安装即可验证安装成功node -v安装vuenpm install vue验证安装成功npm list vue安装vue-cli脚手架构建工具安装npm install -g vue-cli 验证安装成功vue -V 通过Vue脚手架创建项目启动脚手架GUI界面vue
2021-06-23 23:11:25
308
3
原创 vue cli创建vue2项目报错:ERESOLVE unable to resolve dependency tree;但创建vue3项目正常
本地环境@vue/cli: 4.5.7node: 16.3.0npm: 7.15.1报错信息npm ERR! code ERESOLVEnpm ERR! ERESOLVE unable to resolve dependency treenpm ERR!npm ERR! Found: vue@2.6.14npm ERR! node_modules/vuenpm ERR! vue@"^2.6.11" from the root projectnpm ERR! peer vue
2021-06-23 10:29:37
2182
1
原创 Pytest控制台输出信息说明
在pycharm中执行测试用例,会在控制台打印如下信息:在上图中7和8的测试结果,会有如下几种情况:说明测试结果(7)测试结果(8)测试通过.passed测试失败(fail或xpass与strict冲突造成的失败)Ffailed测试未被执行sskipped预计测试失败,并且确实失败xxfail预计测试失败,但实际上运行通过,不符合预期Xxpassed测试用例之外的触发代码异常Eerror举例import pytest
2021-06-17 22:59:05
1064
3
原创 pytest参数化处理:使用参数化装饰器、解析列表、元组、字典等数据
在pytest中,也可以使用参数化测试,即每组参数都独立执行一次测试。使用的额装饰器为@pytest.mark.parametrize(argnames, argvalues)列表形式# 列表data = ['123', '456']@pytest.mark.parametrize('pwd', data)def test01(self, pwd): print(pwd)元组形式data2 = [(1, 2, 3), (4, 5, 6)]@pytest.mark.parame
2021-06-15 22:13:51
664
2
原创 pytest标记:查找测试策略、标记测试函数
Pytest查找测试策略默认情况下,pytest会递归查找当前目录下所有以test开始或结尾的Python脚本,并执行文件内的所有以test开始或结束的函数和方法。标记测试函数由于某种原因(如test_func2的功能尚未开发完成),我们只想执行指定的测试函数。在pytest中有几种方式可以解决:第一种,显式指定函数名,通过::标记pytest test_no_mark.py::test_func1第二种,使用模糊匹配,使用-k选项标识pytest -k func1 test_no_mark
2021-06-14 21:48:44
374
8
原创 pytest 简介:安装、用例编写规则、执行用例
pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点:简单灵活,容易上手,文档丰富;支持参数化,可以细粒度地控制要执行的测试用例;能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfa
2021-05-30 23:01:08
170
2
原创 Ngnix配置详解
#安全问题,建议用nobody,不要用root.#user nobody;#worker数和服务器的cpu数相等是最为适宜worker_processes 2;#work绑定cpu(4 work绑定4cpu)worker_cpu_affinity 0001 0010 0100 1000#work绑定cpu (4 work绑定8cpu中的4个) 。worker_cpu_affinity 0000001 00000010 00000100 00001000 #error_log
2021-05-26 23:43:45
162
原创 访问阿里云的Nginx
前提:阿里云服务器已经启动nginx,端口为80.1、切换到实例列表,点击管理2、点击安全组3、点击配置规则4、添加配置,开放80端口协议类型:HTTP(80)端口范围:80/805、配置完成后,访问公网IP,即可访问nginx:...
2021-05-25 23:16:10
369
原创 Linux安装Ngnix
安装Nginx安装依赖安装依赖yum -y install gcc zlib zlib-devel pcre-devel nginx下载压缩包cd /usr/local/wget http://nginx.org/download/nginx-1.18.0.tar.gznginx下载地址在官网获取解压tar -zxvf nginx-1.18.0.tar.gz 编译安装检查环境cd nginx-1.18.0/./configure编译安装make
2021-05-25 22:48:03
112
原创 Mac终端快速启动uiautomatorviewer
查找sdk的目录位置▶ where adb/Users/wll886/Library/Android/sdk/platform-tools/adb添加环境变量ANDROID_HOME=/Users/wll886/Library/Android/sdkexport PATH=$PATH:$ANDROID_HOME/tools/bin生效环境变量source ~/.bash_profile
2021-05-25 11:47:46
1193
原创 mac使用sshpass免密登录远程服务器
前提本地已经安装sshpass环境▶ sshpass -Vsshpass 1.08(C) 2006-2011 Lingnu Open Source Consulting Ltd.(C) 2015-2016, 2021 Shachar ShemeshThis program is free software, and can be distributed under the terms of the GPLSee the COPYING file for more information.
2021-05-25 11:45:40
475
原创 mac安装 Docker
系统要求Docker Desktop for Mac 要求系统最低为macOS Mojave 10.14。Homebrew 安装Homebrew的Cask已经支持Docker Desktop,因此可以很方便的使用Homebrew Cask来进行安装:brew install --cask docker手动安装在官网下载对应版本的Docker Desktop(M1芯片和Intel芯片版本不同)。下载完成后,双击下载的 .dmg 文件,即可完成安装。切换国内镜像国内源国内从Docker H
2021-05-22 22:01:03
691
原创 mac下安装sshpass
下载到本地安装下载安装包https://sourceforge.net/projects/sshpass/解压并切换到安装包目录tar -zxvf sshpass-1.08.tar.gzcd sshpass-1.08检验环境./configure编译源码安装make&&make install检测安装是否成功▶ sshpassUsage: sshpass [-f|-d|-p|-e] [-hV] command parameters -
2021-05-19 15:50:44
6517
原创 PO模式:BasePase封装
在PO内有很多的配置功能是相似的,我们可以将它抽离出来,封装到一个父类里面去,比如:实现通用的Page方法,对常用自动化行为做封装管理各种Driver减少每个Page对Appium、Selenium等库的太多依赖针对PO简介中的示例,在创建MainPage和SearchPage对象时,都需要初始化driver对象:def __init__(self, driver: WebDriver): self.driver = driver因此,可以创建一个base_page.py方法,封装初
2021-05-05 22:49:06
402
原创 PO模式简介与示例
简介PO模式(Page Object Model)是自动化测试项目开发实践的最佳设计模式之一。PO模式的核心思想是通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。优点代码可读性高,减少冗余代码;增加用例的可维护性,业务代码和测试代码被分开,降低耦合性维护成本低;增强复用性。基本原则方法意义用公共方法来代表UI所提供的功能如:首页的搜索功能,名站功能方法应该返回其他的page object或者返回
2021-05-05 20:34:18
11299
2
原创 Appium常用断言
在编写自动化脚本,一般常用的断言场景有两种:元素是否存在:find_elements元素属性是否正确:get_attributepytest assertappium引入pytest之后,就可以直接使用pytest的断言语法元素是否存在assert len(self.driver.find_elements_by_xpath('//*[@text="Edit"]')) == 1assert 'Clicked popup menu item Search' in self.driver.f
2021-04-25 13:53:57
2487
原创 appium识别toast
appium识别toast控件,需要满足如下条件:appium版本需要在v1.6.3以上;需要使用Uiautomator2库(automationName:uiautomator2)在写脚本的过程中,推荐使用xpath的方式查找toast//*[@class="android.widget.Toast"]也可以使用文本方式定位//*[contains(@text,"xxxx")]使用演示demo演示对于toast的捕获def test_demo_toast(self): #
2021-04-22 13:41:52
226
原创 Appium调用UiAutomator Api
在appium的find elements api中有提到调用在安卓手机上调用uiautomator api进行触控操作,好处是稳定,且比appium封装的方法效率更高。以Python举例(demo):找到第一个textview。driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.TextView").instance(1)')通过文本查找第一个元素。driver.f
2021-04-21 20:16:58
327
原创 Appium常用的Xpath定位方法
Xpath是元素定位中比较常用的方法,当页面元素中没有包含明显的text、ID等或者text不具备唯一性时,那么就必须要使用xpath定位了。driver.find_element_by_xpath()Xpath定位方式分两类:绝对定位:根据严格的父子关系定位相对定位:根据条件匹配定位绝对定位就不说了,直接在页面分析工具中将路径复制出来即可,但平常不推荐使用,一方面是元素较长,不便于代码阅读和后期维护,另一方面是不稳定。本文主要介绍最常用的几种相对定位方式。元素定位通过text定位
2021-04-18 20:20:35
2152
原创 Appium用例等待的三种方式
在运行appium自动化脚本的过程中,有些时候由于页面加载时间过长或者升级、广告弹窗遮挡,导致无法找到对应元素而报错,为了脚本的稳定,会在适当的地方加上等待。一般等待的方式有三种:强制等待 sleep()隐式等待 implicitly_wait()显式等待 WebDriverWait()sleep()sleep() 是设置固定休眠时间。一般情况下,不推荐使用sleep(不智能,会阻塞程序流程去等,使用太多的sleep会影响脚本运行速度)。一般脚本中在需要等待的地方time.sleep(1
2021-04-18 16:48:46
1637
原创 Appium:测试用例改造
之前录制的测试脚本,是一个最基础的测试脚本,还需要通过一些改造,通过一些测试框架的支撑,才能成为在项目中使用的测试用例。测试框架的选择:java推荐testNGpython推荐pytest创建pytest用例有多种形式,我们最常用的是以下这种:# content of test_class.pyclass TestClass: def test_one(self): x = "this" assert "h" in x def test_tw
2021-04-16 23:24:25
120
原创 Appium常用自动化的API
常用的api如下,建议直接看官方文档session:driver的初始化device:设备交互element: 元素查找和交互attributes获取元素内部属性Context:(安卓)解决webview测试touch:手势操作Execute Mobile Command:处理一些特殊操作。...
2021-04-15 22:51:56
151
原创 微信测试无法抓包问题
一、背景:微信更新到7.0以后抓包公众号会有证书问题,抓包小程序直接不能打开是因为微信更新了,不再从手机本地获取证书。安卓系统 7.0 以下版本,不管微信任意版本,都会信任系统提供的证书安卓系统 7.0 以上版本,微信 7.0 以下版本,微信会信任系统提供的证书安卓系统 7.0 以上版本,微信 7.0 以上版本,微信只信任它自己配置的证书列表二、苹果端解决方法:不存在问题,代理连接方法:先关掉代理登录微信,然后打开代理即可正常抓包小程序三、安卓端解决方法:1、安装VirtualXpose
2021-04-15 17:02:43
4141
Vue(+ element UI + Django)编写学生管理页面后端资源
2020-11-29
jpgc-prmctl-0.4.zip
2020-06-06
SQLite Manager.crx
2020-04-06
historian.py
2020-04-02
Word Clock官方包
2020-01-29
Fliqlo_V1.8.1
2020-01-29
雾山的Robotium学习笔记---使用junitreport导出测试报告
2014-06-10
typeText与enterText的区别
2014-05-25
通过id查找控件
2014-05-25
Robotium_ChooseDemo
2014-05-19
ChooseDemo
2014-05-19
Robotium 的翻页问题,有什么方法能抓取超过一屏的已加载信息
2014-05-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人