自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 用oh-my-zsh武装你的终端

Mac 终端默认 shell 为 bash,虽然也不错,但是zsh比他好用太多,谁用谁知道。本文主要介绍安装oh-my-zsh 以及 oh-my-zsh 的配置。Oh My Zsh是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。它基于zsh命令行,提供了主题配置,插件机制,已经内置的便捷操作。给我们一种全新的方式使用命令行。查看当前使用的shellecho $SHELL查看安装的shellcat /etc/shells上面一个是Mac自带的zsh,可能不

2020-08-20 19:13:36 250

原创 【测试】Python面试题

Python面试

2022-06-26 01:51:39 1308 2

原创 java学习路径-Day4【面向对象】

什么是面向对象?面向对象程序设计的雏形,早在出现在1960年的Simula语言中,当时的程序设计领域正面临着一种危机:在软硬件环境逐渐复杂的情况下,软件如何得到良好的维护?面向对象程序设计在某种程度上通过强调可重复性解决了这一问题。目前较为流行的面向对象语言主要有Java、C#、C++、Python、Ruby、PHP等面向对象是一种将事务高度抽象化的编程模式概述:将问题分解成一个一个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之间的调用,组合解决问题。就是说,在进行面向对象进行编程的

2022-05-08 17:23:32 408

原创 Web常见安全漏洞

1 越权漏洞越权指主体逾越权限访问资源。比如用户张三取消了用户李四的外卖订单、商户营业员查看了财务信息(假定角色营业员没有财务权限)。越权的分类:水平越权:如上述张三取消李四外卖订单。数据越权需从数据层面考虑,映射到关系数据库中的表,应该需要增加行控制(归属校验),即表中该订单记录关联的用户是张三时,张三才有权限。垂直越权:如上述营业员查看财务信息。功能越权需从功能层面考虑,往往需要从接口层面限制,比如在Java程序种接口方法添加角色校验注解,程序处理注解检查当前登录用户是否具有相应的权限。1.1

2022-04-15 14:02:58 8657

原创 接口测试入门

1 接口是什么如果你的订单上有一个汉堡,工作人员会先找到汉堡的原材料如面包片、肉饼和生菜等,按照规定步骤,将这些原材料组合成一个汉堡,然后送给你;如果你的订单上有一份薯条,那么工作人员会进入另外一个工作流程,先找到薯条原材料和炸薯条的锅,把薯条炸好后,送到你面前。那么在上面的例子中,汉堡以及薯条的原材料就是接口中必要的条件入参,也就是接口的特定输入;制作汉堡或烹饪薯条的过程,就是接口内部的处理逻辑;送到你面前的汉堡和薯条,就是接口的处理结果和特定输出,也就是返回参数。接口就是有特定输入和特定输出的一

2022-04-05 16:46:02 564

原创 Charles打开后网络请求不通的可能原因及解决方案

如果打开Charles代理开关后发现电脑网络不通,很有可能是因为你的代理设置端口号被本地其他服务占用:先在命令行确认下代理设置中这个端口号是否被占用,如果被占用的话可以设置为其他端口号或终止占用服务的进程...

2022-03-15 21:24:00 7285

原创 java学习路径-Day3【关于字节码】

在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以, Java 程序运行时相对来说还是高效的(不过,和 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。我们需要格外注意的是 .class->

2022-02-26 12:12:50 177

原创 java学习路径-Day2【JDK和JRE】

JDK ( Java Development Kit )即Java开发工具,它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器(javac)和工具(如 javadoc 和 jdb)。它能够创建和编译程序。JRE( java runtime environment )即Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。...

2022-02-25 16:38:07 208

原创 java学习路径-Day1【java特性】

1、跨平台/可移植性这是Java的核心优势。Java在设计时就很注重移植和跨平台性。比如:Java的int永远都是32位。不像C++可能是16,32,可能是根据编译器厂商规定的变化。这样的话程序的移植就会非常麻烦。2、安全性Java适合于网络/分布式环境,为了达到这个目标,在安全性方面投入了很大的精力,使Java可以很容易构建防病毒,防篡改的系统。3、面向对象面向对象是一种程序设计技术,非常适合大型软件的设计和开发。由于C++为了照顾大量C语言使用者而兼容了C,使得自身仅仅成为了带类的C语言,多少

2022-02-25 16:16:39 66

原创 使用Charles抓包查看微信开发者工具中发送的http请求

如果想使用Charles抓包查看微信开发者工具中的请求,只需要在微信开发者工具中手动设置代理即可,步骤如下:1.打开微信开发者工具,找到【设置】-【代理设置】2.在代理设置中选择“手动设置代理”,填写配置如下(端口8888对应Charles中设置的端口号)3.上面两步骤都完成后在电脑上打开Charles,就可以看到微信开发者工具中发送的请求了...

2022-01-19 11:51:26 4023

原创 homebrew被墙后通过国内镜像安装,so fast

正常下载homebrew是在终端运行脚本:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"但是因为地址被墙所以会报错:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation timed out此时可以通过国内镜像源下载homebrew:/bin/zsh -.

2022-01-16 17:49:59 616

原创 Mac安装配置JMeter

1.官网下载https://jmeter.apache.org/download_jmeter.cgi2.解压例如下载到/Users/cwb/Documents/Software/apache-jmeter-5.4/目录,则进入解压3.修改配置文件/Users/cwb/Documents/Software/apache-jmeter-5.4/bin/jmeter.properties找到language在下面增加一行并保存 :4.查看版本jmeter -v5.运行命令行输入jmete

2021-12-24 18:50:46 824

原创 Java序列化

Java序列化常用3个库:google的Gson、alibaba的fastJson、springBoot默认的jackson,主要讲下这3个库的基本用法:Student student = new Student("真水无香", 30, Student.Gender.FEMALE);//fastJson用法String fastJsonStr = JSON.toJSONString(student);Student student1 = JSON.parseObject(fastJsonStr,

2021-12-20 21:22:24 330

原创 mac安装Maven并配置环境

1.下载Maven下载地址https://maven.apache.org/download.cgi推荐下载比较稳定的3.5.*版本下载到本地后解压2.配置环境变量vim ~/.bash_profile打开编辑模式,写入下面代码块:M2_HOME=/Users/chenwenbin/develop/apache-maven-3.5.4PATH=$PATH:$M2_HOME/binexport M2_HOME更新配置:source .bash_profile3.验证配置

2021-12-18 16:49:20 368

原创 Intellij IDEA创建多级package

如果是初用Intellij IDEA,在Java项目中创建多级package时可能遇到下面这种情况,右键一级目录new package后,二级目录会覆盖掉一级目录,此时只需要修改IDEA的一个设置即可,去掉截图中该设置项的勾选状态...

2021-12-18 15:46:40 2574 2

原创 JMeter学习路径(1)JMeter简介

Apache JMeter用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。Jmeter的常用功能:测试计划:用来描述一个性能测试,所有内容都是基于这个计划的。线程组:可以理解成为虚拟用户组。setup thread group:可用于执行预测试操

2021-12-12 15:16:51 105

原创 web页面元素定位和控制台调试

1、目前一直在用css和xpath定位web元素位置,具体的语法参考这里:https://www.w3school.com.cn/cssref/css_selectors.asphttps://www.w3school.com.cn/xpath/xpath_syntax.asp2、控制台调试:

2021-12-10 19:47:41 8252

原创 Java BigDecimal生成随机金额

/** * 获取金额 * @param min * @param max * @return */public static BigDecimal getRandomRedPacketBetweenMinAndMax(BigDecimal min, BigDecimal max){ float minF = min.floatValue(); float maxF = max.floatValue(); //生成随机数 BigDecimal db = new BigD

2021-11-29 20:22:09 1385

原创 Selenium系列(1)ChromeDriver安装和配置(MacOS环境)

1.本地下载浏览器驱动,下载地址如下,记得选和自己浏览器版本匹配的驱动版本下载。https://www.selenium.dev/documentation/getting_started/installing_browser_drivers/2.把步骤1下载的驱动放到usr/bin目录下(个人习惯),然后在.bash_profile里添加这一行:export PATH=$PATH:/usr/bin/chromedriver保存退出;3.在mac的终端输入chromedriver,看到启动成功则

2021-11-16 10:53:47 590

原创 解决MacOS升级导致homebrew不能正常使用的问题

步骤1:重置homebrew​ brew update-reset ​步骤2:重装CLTsudo rm -rf /Library/Developer/CommandLineToolssudo xcode-select --install

2021-11-13 23:51:35 1345

原创 爬取微信小程序上海天文馆可购票数

import requestsimport urllibimport timefrom requests.packages.urllib3.exceptions import InsecureRequestWarning#requests 移除SSL认证,输出InsecureRequestWarning提示的取消方法requests.packages.urllib3.disable_warnings(InsecureRequestWarning)if __name__ == "__main

2021-11-08 11:31:15 1907 1

原创 MacOS安装多个Python版本导致Python3: Command not found

通过Homebrew安装了多个Python版本,导致在命令行中执行Python3命令时报错Command not found解决方案,使用软连接:ln -s /usr/local/Cellar/[email protected]/3.7.9_2/bin/python3 /usr/local/bin/python3如果pip3命令也提示Command not found,可以用相同办法解决:ln -s /usr/local/Cellar/[email protected]/3.7.9_2/bin/pip3 /usr/local

2021-07-01 16:43:27 2255

原创 Java从列表中随机取出一个元素

写自动化时常需要从接口返回的列表中随机获取一个元素进行断言,可以这么写:Random random = new Random();int i = random.nextInt(list.size());list.get(i);

2021-05-17 19:16:20 1346

原创 python @property的使用

python的@property是python的一种装饰器,是用来修饰方法的。由于python进行属性的定义时,没办法设置私有属性,因此要通过@property的方法来进行设置。这样可以隐藏属性名,让用户进行使用的时候无法随意修改。class Service(object): def __init__(self): self._dailyUrl = "http://daily.com" self._preUrl = "http://pre.com" #定义属性的名

2021-03-22 19:18:43 108

原创 python核心基础(4)- 条件和循环

条件语句先看一个简单的条件语句,例如表示y= |x|这个函数:# y = |x|if x < 0: y = -xelse: y = x情况稍复杂点的时候,会有多个条件判断,这时候需要用到else if,在Python中使用elif表示,看这个例子:if id == 0: print('red')elif id == 1: print('yellow')else: print('green') 有人喜欢省略判断条件,省略的常见情况如下(但是

2021-02-26 14:08:00 48

原创 python核心基础(3)- 字符串string

1. 字符串基础基本概念:字符串是由独立字符组成的一个序列,通常包含在单引号(’’)双引号("")或者三引号之中(’’’ ‘’'或""" “”",两者一样),比如下面几种写法。name = ‘jason’city = ‘beijing’text = “welcome to jike shijian”三引号通常用在函数注释中:def wait_someone(years): """ i forgot everything and it's good for me args: time

2021-01-13 11:12:21 95

原创 python核心基础(2)- 字典dict和集合set

1. 字典和集合基础基本概念:字典是一系列由键(key)和值(value)配对组成的元素的集合,在Python3.7+,字典被确定为有序(注意:在3.6中,字典有序是一个implementation detail,在3.7才正式成为语言特性,因此3.6中无法100%确保其有序性),而3.6之前是无序的,其长度大小可变,元素可以任意地删减和改变。而集合和字典基本相同,唯一的区别,就是集合没有键和值的配对,是一系列无序的、唯一的元素组合。2. 创建、访问、增、删、更新字典和集合的创建方式有以下几种:

2021-01-12 19:50:10 110 3

原创 python核心基础(1)- 列表list和元祖tuple

1. 列表和元祖基础基本概念:列表和元祖是什么?简单来讲,列表和元祖就是一个可以放置任意数据类型的有序集合。且在python中,集合的数据类型不需要是一致的,区别于绝大多数语言集合的数据类型必须一致的要求。列表和元祖的区别:列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素。而元组是静态的,长度大小固定,无法增加删减或者改变。示例:如果想改变已有元祖是不可行的,曲线救国的方法是创建一个新的元祖:列表和元祖都支持负数索引:列表和元祖都支持切片操作:列表和元祖互相转化:列表

2021-01-11 16:26:27 344 1

原创 Charles常用mock技巧

breakpointsmap localmap remote

2020-12-28 16:47:13 363

原创 pytest教程之Allure生成测试报告

优点:Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信息。从开发/质量保证的角度来看,Allure报告可以缩短常见缺陷的生命周期:可以将测试失败划分为bug和损坏的测试,还可以配置log,step,fixture,attachments,timings,历史记录以及Bug跟踪系统…缺点:拓展功能需要在测试用例上加装饰器1. 安装插件pip3 install al

2020-12-26 15:00:50 698

原创 pytest教程之多重校验pytest-assume插件使用

pytest中可以用python的assert断言,也可以写多个断言,但一个失败,后面的断言将不再执行。使用插件pytest-assume可以解决这个问题。1. 安装# 安装pip3 install pytest-assume2. 测试用例demoimport pytestclass TestAssertAssume: # 第3个断言失败后该用例终止 def test_assert(self): assert 1 + 1 == 2 assert 1

2020-12-26 14:56:13 759

原创 pytest教程之重复执行插件pytest-repeat(多条断言有1条失败后仍继续运行)

平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来1. 安装插件# 安装pytest-repeat模块pip3 install pytest-repeat2. 用例demoimport pytestclass TestRepeat: def test_example(self): import random flag = random.choice([True, False

2020-12-26 14:51:55 549

原创 pytest教程之自定义mark

1. 用例demo# 用例import pytestclass TestMark: @pytest.mark.weibo def test_weibo(self): assert 1+1==2 @pytest.mark.toutiao def test_toutiao(self): assert 1+2==3 @pytest.mark.xinlang def test_xinlang(self):

2020-12-26 14:48:00 237

原创 pytest教程之参数化

1. 用例demo# 用例import pytestdata = [ (1,2,3), (2,3,5), (5,6,11)]ids = ['{0} + {1} = {2}'.format(a,b,expected) for a,b,expected in data]class TestParametrize: @pytest.mark.parametrize('a,b,expected',data,ids=ids) def test_add_func

2020-12-26 14:46:19 302

原创 pytest教程之skip运行时跳过用例

1. 用例demoimport pytestimport sysskipmark = pytest.mark.skip(reason="不能在staging环境运行")class TestSikp: @pytest.mark.skip(reason="不执行,因为没写好") def test_one(self): print(1) @skipmark def test_two(self): print(2) # cond

2020-12-26 14:44:38 303

原创 pytest教程之fixture使用

如果有以下场景:用例 1 需要先登录,用例 2 不需要登录,用例 3 需要先登录。很显然无法用 setup 和 teardown 来实现了。fixture可以让我们自定义测试用例的前置条件。fixture的优势:(1)命名方式灵活,不局限于 setup 和teardown 这几个命名(2)conftest.py 配置里可以实现数据共享,不需要 import 就能自动找到fixture(3)scope=“module” 可以实现多个.py 跨文件共享前置1. 推荐在conftest.py文件中写fi

2020-12-26 14:42:46 483 1

原创 pytest教程之setup、teardown

模块级别:setup_module、teardown_module函数级别:setup_function、teardown_function,不在类中的方法类级别:setup_class、teardown_class-方法级别:setup_method、teardown_method1. demoimport pytestdef setup_module(): print("=====整个.py模块开始前只执行一次:打开浏览器=====")def teardown..

2020-12-26 14:39:04 133

原创 airtest实战微信小程序测试

文章目录1 airtest项目背景2 airtest简介3 环境搭建3.1 下载IDE3.2 配置本地Python环境3.3 连接手机4 IDE功能区介绍5 编写脚本5.1 常用方法5.2 airtest脚本示例5.3 poco脚本示例1 airtest项目背景2 airtest简介3 环境搭建3.1 下载IDE3.2 配置本地Python环境3.3 连接手机4 IDE功能区介绍5 编写脚本5.1 常用方法5.2 airtest脚本示例5.3 poco脚本示例...

2020-11-19 15:09:19 2378 1

原创 TestNG断言失败后继续向下执行代码

问题:TestNG提供的Assert断言模块在断言失败后会抛出exception,同时终止该条case方法的执行。在自动化的实际场景中,这会导致例如失败用例的脏数据堆积问题,因为有时候我们是在case方法里的最后进行数据清理/重置状态的操作的(并非所有数据清理的动作都适合放在teardown里)。解决方案:步骤1 创建监听器package ListenerPackage; import java.util.ArrayList;import java.util.List; import org

2020-09-29 17:42:50 891

原创 JAVA实体类中属性类型是Date或Timestamp导致Gson反序列化失败

如果是Date类型导致的,把Date改成String类。如果是Timestamp类型导致的,目前我的解决方法是,注释掉实体类里的这个属性(如果case里用不到这个值的话)。

2020-09-29 17:02:52 522

空空如也

空空如也

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

TA关注的人

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