自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据驱动测试框架设计——12数据依赖上

我们调用接口过程中常常遇到这样的场景,例子:创建用户id,然后查询该id也就是说 调用创建用户接口,返回的id 会当做请求数据 再来调用查询用户接口,这里就涉及到数据的依赖。思路:根据该用例的前置条件,查到依赖的case,取到发送请求后返回的数据,然后替换该用例的求情数据,再发送请求1.前置条件按照图中书写,用例编号>返回数据格式2.封装一个函数对前置条件进行拆分,获取到用例编号3.获取某一列的数据...

2020-08-19 10:08:13 161

原创 数据驱动测试框架设计——5根据业务状态码code获取对应的message预期值

同一个接口,不同的业务状态码对应的不同的message。断言经常会断言业务状态码以及对应的message以及网络协议码。这篇文章主要记录如何针对同一接口不同业务状态码对应不同的message进行断言思路:1.首先得创建一个json文件把,不同业务状态码对应不同的message以字典的形式存放到config包里如图我随意找了两个接口做示范2.修改之前的mock_getvalue.py为handle_value.py并对其进行修改使得兼容mock和code_message的json获取,并注意对命

2020-08-03 17:25:01 516

原创 数据驱动测试框架设计-2如何读取excel内容

安装openpyxlwin+r键 输入 cmd 然后输入pip install openpyxl 进行安装如何进行某个单元格的数据获取封装封装参考以下代码,后续可以通过此类来获取整行的数据,并放入列表中,方便后续取值

2020-07-28 22:30:39 163

原创 mac环境配置Java

mac环境配置java下载地址:点击进行java下载环境变量配置1.如果第一次配置环境变量则需要通过touch .bash_profile创建配置文件否则通过open -e .bash_profile打开配置文件2.查看java所安装的地址/usr/libexec/java_home -V3.将查询到的地址如下图复制到文本中并保存再输入source .bash_profile使环境变量生效验证环境变量是否配置ok:echo $JAVA_HOME 如果能正常显示java路径,证明已经配置成

2022-04-09 22:41:14 3385

原创 python基础——匿名函数lambda

匿名函数lambda何时使用函数的逻辑比较简单时,为了减少代码量可以使用匿名函数lambda1.语法lambda 输入参数 : 处理逻辑例如如下代码我们要实现对列表里数据的平方运算:普通写法def square(l): square_list = [] for ele in l: square_list.append(ele * ele) return square_listif __name__ == "__main__":

2022-01-12 09:47:21 406 1

原创 python基础知识——列表表达式

列表表达式如下图所示我们想输入参数的每个字母,输出到一个列表里def output_letter(letter): l = [] for item in letter: l.append(item) return lif __name__ == "__main__": print(output_letter('levi'))#此方法的输出为:['l', 'e', 'v', 'i']这样写很冗余,我们可以通过列表表达式来简化代码

2022-01-12 09:03:40 843

转载 cookie、session、token的区别(转载)

这篇讲的比较通透:cookie、session与token的真正区别

2021-11-29 11:35:03 120

原创 python基础知识——列表

概念列表 由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,比如字典、字符串、整型、元组、列表。而且元素之间可以没有任何关系对列表进行的常见操作访问元素示例:访问列表中的第一个元素以及列表中第三个元素中的第一个元素list1 = ["1","2",["3","4"]]print(list1[0],list1[2][0])增加元素示例:给列表增加一个元素方法一:在列表的最后加一个元素list1 = [

2021-09-01 16:17:51 113

原创 python基础知识——字符串

定义字符串就是一系列的字符,在python中用引号括起来的都是字符串,包括单引号和双引号实例:“这是1个字符串”‘这也是1个字符串’常见的对字符串的操作字符串的分割并返回列表示例:以","作为标识把“A,B,C,D”分割为“A”,“B”,“C”,“D”str1 = "A,B,C,D"str2 = str1.split(",")print(str2)字符串的替换示例:把字符串中的A替换成Bstr1 = "A,A,C,D"str2 = str1.replace("A","B

2021-09-01 14:48:39 111

原创 pytest框架——fixture固件1

使用场景距离:3条用例,其中两条需要执行登录操作,另外一条用例不需要进行登录操作,我们就可以使用fixture来使问题简单化ex:`# -- coding:utf-8 --#auth:duoduoimport pytest@pytest.fixture()def login():print(“登录成功”)def test_1(login):#需要登录assert 11def test_2():#不需要登录assert 22def test_3(login):#需要登录ass

2021-04-16 10:50:58 190

原创 pytest_安装与配置

安装用pip install -U pytest 命令进行安装 -U 的意思是 如果现在有安装就升级最新版本,如果没有安装就安装最新版本pycharm中配置pytestpytest默认使用xxx.py的模式去运行脚本的,想默认以pytest模式运行,得在pycharm中做如下配置测试是否配置完成# -*- coding:utf-8 -*-#auth:duoduoimport pytestdef setup_function(): print("开始执行")def teard

2021-04-09 10:03:15 217

原创 python写的一些小工具——python连接linux并操作

封装了paramiko这个库# -*- coding:utf-8 -*-import paramikoclass SSHConnection: # 初始化连接创建Transport通道 def __init__(self, host='xxx.xxx.xxx.xxx', port=22, user='xxx', pwd='xxxxx'): self.host = host self.port = port self.user = us

2020-10-27 09:21:42 459

原创 GUIselenium——Aalert弹框的处理

针对弹出框通常有四个操作from selenium import webdriverdriver = webdriver.Firefox()driver.get("http://www.xxxxxxx.com")'''跳转到弹窗上'''a = driver.switch_to.alert()'''打印单床文本信息'''print(a.text)'''接受弹窗'''a.accept()'''取消弹窗'''a.dismiss()'''弹窗中输入文本信息'''a.send_keys("

2020-09-16 20:34:43 162

原创 GUIselenium自动化——下拉框的处理

下拉框有两种:一种是html标签select的下拉框,另外一种是html标签input的下拉框针对第二种,我们就用元素定位,点击的方法进行操作针对第一种,selenium中提供了select类from selenium import webdriver'''导入Select类'''from selenium.webdriver.support.select import Selectdriver = webdriver.Firefox()driver.get("http://www.xxxx

2020-09-16 20:20:07 259

原创 shell——7处理海量数据的grep、cut、awk、sed 命令(上)

**grep应用场景:通常对数据进行 行的提取**grep [选项]…[内容]…[file]-v 对内容进行取反- n 对提取的内容显示行号 -w 精确匹配-i 忽略大小写进行匹配^行首匹配比如一行中, 行首有a,中间也有a 那用这个只能匹配到行首的a具体用法:grep ‘^a’ /file-E 正则匹配**cut的应用场景:对数据进行列的提取**语法:cut [选项]…[file]-d 指定分隔符-f 指定截取区域-c 以字符为单位进行分割如图我输入的命令就是

2020-09-11 08:42:22 180

原创 shell——7脚本输出上色

这块就记住固定写法echo -e “\033[30m 黑色字 \033[0m”echo -e “\033[31m 红色字 \033[0m”echo -e “\033[32m 绿色字 \033[0m”echo -e “\033[33m 黄色字 \033[0m”echo -e “\033[34m 蓝色字 \033[0m”echo -e “\033[35m 紫色字 \033[0m”echo -e “\033[41m;30m 红底黑字 \033[0m”echo -e “\033[42m;30m 绿底

2020-09-10 16:20:27 124

原创 shell——6脚本输入read命令

创建一个sh文件 给里面输入以下内容#!/bin/bash#studyread -p"请输入你的密码:" passecho $pass看看输出这里就不难理解,read类似于python中的input方法-p后面跟 屏幕上想要显示的内容,例如:请输入你的密码-s 可以隐藏你输入的内容-e “\n” 对字符串进行处理-t 5 5秒后返自动执行,然后退出脚本-n 设置最多输入的字符,多余的自动舍掉例如sh文件里输入#!/bin/bash#studyread -t 3 -s -n

2020-09-10 13:29:56 187

原创 shell——5常见的条件判断

用法[ 表达式 ]-e 目标是否存在-d 路径是否存在-f 判断文件是否存在具体用法同上-r 是否有读的权限-w是否有写的权限-x是否有执行的权限|| 的意思是前面的命领为false,才会执行后面的整数值的比较-eq 等于 (equla)-ne 不等于(not equla)-gt 大于(greater than)-lt 小于(lesser than)-ge 大于等于(greater or equal)-le 小于等于(lesser or equal)字符串对比= 相等!

2020-09-10 11:45:44 138

原创 shell——运算符

整数运算有三种方法expr 12 + 6echo $[ 12 + 6 ]echo $((12 + 6))切记 加号两边要有空格同理减 和乘法 除法 取余 分别 把加号换成 -减号 *乘号 /除号 %取余 就可以了如果想要进行小数的运算那就需要linux自带的bc计算器输入bc回车 进入bc计算器 ctrl+c 返回不进入bc计算器也可以进行运算echo “1.2 + 1.3” | bc想要保留几位小数,需要用scale=命令,不过只对除法或者取余起作用,如图保留两

2020-09-10 11:22:32 104

原创 shell——3常见的解释器

解释器:是一种命令解释器,主要的作用是对命令进行运行和解释,将需要执行的操作传递给操作系统内核并执行#!/bin/bash(默认的)#!/bin/ksh#!/bin/bsh#!/bin/shshell脚本第一行会写 所要用的解释器 第二行写注释 告诉别人你这个脚本是干什么的 第三行写作者和日期最简单的shell脚本#!bin/bash#hello world#auther timeecho "hello world"...

2020-09-09 16:27:25 238

原创 shell——2vi编辑器的基本命令

远程链接工具推荐: CRT putty输入vi 文件名进入该文件默认进入命令行模式命令行模式可用的命令:x删除单个字 dd删除整行编辑模式:按键盘的i 进入编辑模式 o可以切换到下一行底部命令模式:按键盘的Esc进入该模式/ xxx 就是在该文件中查找xxx在哪wq 保存退出q! 不保存退出set nu 显示行数...

2020-09-09 16:17:16 125

原创 shell语言——1常用的linux命令

1.cd切换目录cd … 返回上一级cd - 返回上一次的层级2.ls列出目录内容ls- lrt 以修改时间为顺序排列显示目录内容ls-l 简写ll 以列显示目录内容3.cat查看文件cat +文件名4.chown修改文件权限chown mysql:mysql 1.txt 修改1.txt 为mysql用户 mysql组5.chomd 给不同用户不同权限语法为 chmod abc file其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。r

2020-09-09 15:34:27 194

原创 GUIselenium——po模式

什么是po模式:po模式也就是页面对象模式,是自动化测试项目开发实践的最佳设计模式之一为什么要用po模式:好处1:通过对界面元素的封装-------减少冗余代码,提高可读性好处2:若元素定位发生变化,只需调整页面元素的封装的代码------提高了测试用例的维护性PO模式的业务分为多少层?基础层:封装定位元素的方法对象层:封装对元素的操作业务层:将一个或多个操作组合起来,实现一个业务功能实际例子:基础层:# -*-coding:utf-8-*-from selenium import w

2020-09-09 11:53:56 171

原创 GUI自动化——键盘事件

思路:1.引入键盘类 2.获取需要操作的目标元素 3.进行键盘操作进行全选# -*-coding:utf-8-*-# 导入时间模块import time'''引入webdriver'''from selenium import webdriver'''引入键盘类'''from selenium.webdriver.common.keys import Keys'''创建驱动实例化的对象driver'''driver = webdriver.Firefox()'''打开网址'''dri

2020-09-08 09:44:57 236

原创 GUI自动化selenium——右键和双击操作

思路:1.引入鼠标类 2.实例化鼠标类 3定位到目标元素 4鼠标右击或双击目标元素# -*-coding:utf-8-*-# 导入时间模块import time'''引入webdriver'''from selenium import webdriver'''引入鼠标类'''from selenium.webdriver.common.action_chains import ActionChains'''创建驱动实例化的对象driver'''driver = webdriver.Fire

2020-09-08 09:29:50 339

原创 GUI自动化selenium——鼠标悬浮

思路:1.引入鼠标类 2.实例化鼠标类 3定位到目标元素 4悬浮到目标元素源码:# -*-coding:utf-8-*-# 导入时间模块import time'''引入webdriver'''from selenium import webdriver'''引入鼠标类'''from selenium.webdriver.common.action_chains import ActionChains'''创建驱动实例化的对象driver'''driver = webdriver.Fire

2020-09-08 09:21:18 209

原创 GUI自动化selenium——浏览器的属性

1.获取当前的url# -*-coding:utf-8-*-# 导入时间模块import time'''引入webdriver'''from selenium import webdriver'''创建驱动实例化的对象driver'''driver = webdriver.Firefox()'''打开网址'''driver.get("https://www.baidu.com/")'''获取当前的url'''print(driver.current_url)'''等待3秒'''ti

2020-09-07 15:45:21 161

原创 GUI自动化selenium——iframe定位思路

有时候你可能定位是对的,但是就是不起作用。这时候你可以看看你的元素是否再frame框里,如果是那需要先切到frame框再去定位元素在frame的框里:**图暂时没找到合适的待补充 **切到frame里需要定位frame,有两种方法:1.通过id定位driver.switch_to.frame(“id的值”)2.通过索引定位driver.switch_to.frame(索引)3.有时候我们定位玩frame里的元素还要定位外面的元素,所以要跳出frame使用driver.switch_to.d

2020-09-07 15:15:23 126

原创 GUI自动化selenium——元素定位

元素定位有以下几种方式id的方式driver.find_element_by_id()name的方式driver.find_element_by_name()xpath的方式driver.find_element_by_xpath()class的方式driver.find_element_by_class_name()css的方式driver.find_element_by_css_selector()text的方式driver.find_element_by_link_text()

2020-09-07 14:58:14 300

原创 GUI自动化selenium——环境搭建

安装 python安装 selenium根据不同浏览器 安装不同的驱动谷歌浏览器安装 chromdriver.exeie浏览器安装:略火狐浏览器安装 geckodriver.exe安装driver时候一定要安装浏览器版本对应的版本的driver下载好driver以后,把driver放在浏览器安装的目录下,然后把driver放python.exe目录下(等于变相的添加了环境变量)我用的firfox驱动,然后输入以下代码验证 环境是否ok# -*-coding:utf-8-*-# 导入时间

2020-09-07 11:58:02 163

原创 Postman——newman执行用例

介绍:newman可以使得postman以命令行的形式执行,近而更容易集成到CI上环境配置:node.js 官网下载即可下载完成,cmd命令行 输入 node -v 检查node.js环境是否ok安装newman:国外网站比较慢所以首先配置成淘宝镜像cmd命令行输入:npm config set registry https://registry.npm.taobao.org下载newman:npm -g install newmanpostman导出用例结合cmd 命令行执行测试

2020-09-07 09:03:24 361

原创 Postman——用例的执行顺序

两种方法1.可以在执行的时候collection执行页面对号前拖动右侧用例,来改变执行顺序2.可以在用例tests中添加代码指定下一个执行的用例语法:postman.setNextRequest(ID) 参数:ID:接下来要运行的请求的名称或ID例子:我用代码指定用例一下来执行用例二运行结果:...

2020-09-03 22:58:06 911

原创 Postman——数据驱动

有时我们针对一个接口需要测试很多不同的参数,如果每次一个个去修改参数值来进行测试这样效率肯定比较低下。因此需要每次迭代执行传入不同的参数进行测试,那么需要导入外部数据文件进行参数化,也就是数据驱动。上传的数据(创建一个json文件把下面内容赋值进去):[{“username”:“a”,“passwd”:“1”},{“username”:“b”,“passwd”:“2”},{“username”:“c”,“passwd”:“3”}]...

2020-09-03 22:37:45 359 1

原创 Postman——Collection

Collection就是测试集,把所有用例放在一个集合里的这个集合就叫做Collectionpostman中执行用例大多数是以Collection的形式来执行的如何执行:入口执行前的选项执行结果

2020-09-03 22:08:31 230

原创 Postman——cookies

Cookie是存储在浏览器中的小片段信息,没次请求后都将其发送会服务器,以便在请求之间存储有用的信息。比如很多网站登录界面都有保留账号密码,以便下次登录。由于HTTP是一种无状态的协议,服务器从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证,没人一个,无论谁访问都必须携带自己通信证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。Cookie是有服务端生成,储存在响应头中,返回客户端,客户端会将cookie存储下来,在客户端发送请求时,user-agent会自动获

2020-09-03 21:44:22 685

原创 PostMan——基本认证

往往进行登录接口请求的时候,需要输入用户名和验证码,这个就是属于基本认证,在postman中这样操作在需要添加基本认证的用例,右侧面板选Authorization,然后下拉框选择 Basic Auth,右侧面板输入username 和 password 就ok了!...

2020-09-03 18:39:12 712

原创 PostMan——动态参数以及token

有这样一个场景:我们上一个用例返回的值,要作为发送第二个用例的参数比如实际中,先第一个用例返回了status的值赋值给id,然后第二个用例携带id的发送请求这种场景那这种需要动态参数来解决的事如何在postman中操作呢思路:我们运行第一个用例后,再断言后再写一段代码,给返回值序列化转为json格式的字符串,然后创建一个动态参数id,把response中的status赋值给id如图,在断言tests中编辑,添加选中这段如何引用:用{{id}}来引用运行套件结果: 成功!,第二个携带的us

2020-09-03 16:02:08 720

原创 PostMan——全局变量

为什么要使用全局变量,举个例子,你有1000个用例之前用的host是测试环境都是www.test.com;现在要让测一下线上host是www.ture.com;那我们总不可能去每个用例改你的host吧。 所以我们需要设一个全局变量,这种情况我们只要改全局变量的值就行了在PostMan中如何设置全局变量如图,点击左侧面板测试集,灰色省略号,选择Edit,进入设置页面设置页面选择,variables,然后设置变量 :这块我的变量名是 host然后值是我想要设置的 www.imooc.com/ 完成后

2020-09-03 15:27:32 225

原创 postman——test断言

Postman常用的断言在做接口测试时,在某一些场景下需要添加断言,对接口进行判断。postman在“Tests”中提供了比较多的断言方式来帮助接口测试的断言。1、判断请求返回的状态为200,200就是正常pm.test(“Status code is 200”, function () {pm.response.to.have.status(200);}); // 判断返回响应中的其它字段的值时,同样使用该方法可以实现或者使用tests[“Status code is 200

2020-09-03 11:38:35 901

原创 jenkins——遇到的一个大坑,构建时候找不到目录,但是ide中运行是ok的

问题描述:ide运行测试脚本ok,但是集成到jenkins中就遇到了找不到报错:如何解决:找了一天在百度都没有能找到原因,经过各种调试终于解决原因分析:可能和我给jenkins加了环境变量有关系 我把工程目录设成了环境变量 用于解决jenkins执行时候找不到模块的问题。解决方法:我把代码中涉及到工程目录这块的代码(1、2行代码)直接干掉,直接写成第三行的代码,成功!1report_dir = os.path.dirname(os.path.dirname(file))2 report_

2020-09-02 11:17:26 2881

空空如也

空空如也

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

TA关注的人

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