自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vue-admin-template框架搭建及应用

并且执行 login 方法, 把返回的token , 保存到 vuex、cookie 中(在路由守卫中 / login 是白名单会直接放行、axios 的请求拦截中 添加的是一个空值)style=>页面的css样式。配合路由使用的, 对于vue router 而言它还附带了一些其他的信息, 比如路由守卫, 在路由守卫中我们可以在路由跳转之前来做一些事情的。它只会包装Store中保存的数据,并不会修改Store中保存的数据,当Store中的数据发生变化时,Getter生成的内容也会随之变化;

2023-05-29 11:44:19 14199 1

原创 jenkins 源码管理 returned status code 128: stdout: stderr: fatal: unable to access “****” 403 解决办法

解决 jenkins 链接git 报错code 128 ,403问题

2023-02-02 18:34:06 2942 1

原创 Ymal文件的增删改查

yaml文件的使用

2022-06-17 15:11:01 557

原创 selenium.common.exceptions.SessionNotCreatedException: Message: session not created 解决办法

一、问题原因报这个错是因为 当前浏览器的版本与 chromedriver.exe的版本不一致了。这个时候你需要先知道自己当前浏览器的版本 ,然后再去下载一个 chromedriver.exe的对应版就好了二、解决办法1、查看浏览器版本...

2022-03-22 15:48:37 43225

原创 Appium+selenium 自动化错误截图

一、前言在自动化测试过程中 常常会发生在执行过程中就会遇到App发生异常,这个时候除了日志 有错误页面也很重要,这样我们就知道是在那个页面出现了错误二、截图方法1、get_screenshot_as_file(filename) filename =绝对路径2、save_screenshot(filename) filename = 文件名称,保存当前截图到当前脚本三、案例分享from appium import webdriverdef android_driver(): desi

2022-03-22 14:19:42 3660

原创 Appium常用ADB命令

一、前言因为之前做过APP的自动化测试,不可避免的要跟Appium和Adb打交道,在这记录一下常用的adb命令,因为我连的都是真机,下面就只说说 真机的操作部分,模拟器那部分 可以自行百度,大部分都差不多一、查看当前设备是否连接成功adb devices没链接设备的时候 会显示 附加设备列表有设备并链接成功前面一行代表 手机/模拟器的设备序列号,也就是Appium-deviceName的值device 设备可用unauthorized 未授权二、Appi

2022-03-22 11:24:48 265

原创 Python之推导式,迭代器,生成器

一、推导式1. 列表推导式生成一个从0到9的列表这是不使用列表推导式的情况下:num_list = []for i in range(1,10): num_list.append(i)print(num_list)使用列表推导式的情况下num_list = [i for i in range(1,10)]列表推导式分两种模式:循环模式:[变量(加工的变量) for 变量 in iterable]# 将10以内所有的整数的平方写入列表print([i*i for i in r

2022-03-18 17:58:07 1261

原创 Python 之 装饰器

一、装饰器的前身了解装饰器就要先了解什么是闭包闭包概念:在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数就被认为是闭包在函数startA中定义了一个innerB函数,innerB访问了外部函数startA的变量,并且函数返回值为innerB函数(注意python是可以返回一个函数的,这也是python的特性之一)def startA(x): def innerB(y): return x+y return innerBprint

2022-03-18 16:06:03 872

原创 django 序列化组件Serializer

django 序列化组件的一点心得

2022-01-12 10:07:03 4847

原创 django + vue-admin-template解决CSRF Failed: CSRF token missing or incorrect 问题

背景:vue使用Network进行登录的时候 报错 403,但是在localhost的时候就没问题,进行了一下对比,network header中多了一个cookie,local中就没有,再结合django默认有csrf跨站点请求伪造,翻了翻文档,得知需要在header中添加X-CSRFToken,解决办法如下:解决办法:在vue-admin-template utils/request.js中加入获取csrftoken的方法原先的方法是在有token的情况下vue才会在header中加入token,

2022-01-07 10:39:25 4321

原创 vue-admin-template解决使用动态路由刷新后404

背景:设置好动态路由后,在页面刷新或者加载会出现定位到404问题问题原因:权限控制的路由模块是动态添加进去的,404监听路由是在默认路由里面的,优先级比动态路由要高,所以刷新后默认先被404接管了,把404监听路由也放到动态路由的末尾就可以了解决办法:我把我constantRoutes 里面的404注释掉了,然后asyncRoutes里面加一个就好了...

2022-01-04 15:08:21 4726 1

原创 vue-admin-template实现角色权限管理方式一

背景:前面提到测试工具箱整合页面集成后台,使用了vue作为前端,python的django作为后端,vue前端框架选择了 vue-admin-template(这是一个基础版本) 基础版本既然是后台就会涉及到权限控制,基础版本的vue-admin-template 是没有路由权限控制的,最后是看 vue-element-admin 的 手摸手,带你用vue撸后台 系列二(登录权限篇) 对照的改的vue-admin-template简介:下载地址:vue-admin-template1、修改 rou

2022-01-04 14:31:36 5975

原创 VUE Module build failed: TypeError: this.getOptions is not a function at Object.loader 解决办法

背景:在VUE中安装了 npm install node-sass sass-loader --save-dev,然后启动就报错了,看提示是因为依赖的问题查了一下 node-sass sass-loader 是会有冲突的Module build failed: TypeError: this.getOptions is not a function at Object.loader (D:\testwork\Testgadget\frontend\node_modules\sass-loa...

2021-12-14 17:48:01 6014

原创 如何在 django中安装vue

背景:之前写了一个运维小工具文章地址基于前后端分离的使用标准,前端使用vue,django作为后端处理接口以下是尝试组合的过程:一、vue安装前提:先安装nodejs#安装最新版本的vuenpm install -g @vue/cli#-g是全局安装,并移除安装了 webpack和webpack-clinpm install webpack webpack-cli –g#本地安装(推荐)npm install webpack webpack-cli --save-dev创建VUE项

2021-12-10 16:42:32 5672 2

原创 python 解决 pip 时报错 no suchoption: --bulid-dir 的解决办法

背景:PIP 版本 21.3需要安装 lxml库提示报错 no suchoption: --bulid-dirPyCharm 依赖于 --build-dir 安装第三方库,但该标志在 20.2 版本以后的版中已被删除解决办法:切换版本python -m pip install pip==20.2.4...

2021-12-09 16:25:11 11826

原创 python 操作excel常用方法

背景:在压测过程中 需要跑一批用户session,其中用到了登录接口,需要拿到用户的session值,但由于数据条数太多,不能一条一条的去粘贴复制,想到了可以先跑接口,把session值存进列表中,再写入到excel中

2021-12-09 09:46:16 3865

原创 selenium 常用函数方法

# 实例化一个chrome driver对象driver = webdriver.Chrome()#窗口最大化driver.maximize_window()#清空driver.find_element().clear()#输入driver.find_element().send_keys("xx")#点击driver.find_element().click()#退出driver.quit()# 后退driver.back()# 刷新driver.refres

2021-12-07 16:15:27 3933

原创 unittest单元测试框架如何解决自动化需求

一、背景在自动化框架中unittest单元测试为了满足实际自动化场景一般会遇到以下问题:二、问题1、 如何控制用例执行顺序unittest测试用例执行顺序2、如何让多个用例共用setup、teardownunittest的setup、teardown 会在每个用例执行前 执行一次setup,执行完成后 执行一次 teardowndemo如下:import unittestclass TestSearch(unittest.TestCase): def setUp(self)-

2021-11-29 16:21:41 3886

原创 python 重新使用一个Webdriver的解决方法

一、背景在UI自动化项目设定中,不同场景采用的是不同文件来进行执行的,在不同文件中会引用启动浏览器的类(webdriver 每次实例化都会重新启动一次浏览器)这样的话就会出现你执行几个场景 启动几个浏览器,本来想要的在一个浏览器上执行不同场景的功能就实现不出来。经过查询得知通过webdriver启动一个浏览器会话大概会有这样三个阶段:1、启动的浏览器驱动代理(hromedriver,Firefox的驱动程序,等等);2、创建一个命令执行器。用来向代理发送操作命令;3、使用代理建立一个新的浏览器会

2021-11-24 10:30:06 4287

原创 python+selenium+unittest 只启动一次浏览器方法

背景:在自动化项目中 通常会有N个自动化场景,这个场景可能会分别写在不同的py文件中,如果在每个文件中都执行一次启动浏览器的话,会出现启动多个浏览器并且自动化停止解决思路:把启动浏览器的这段代码 封装成一个类,然后在不同的自动化py文件中 通过imoprt 引入 然后进行复用代码如下:###DriverUtil.py文件###这个里面可以启动浏览器,也可以启动APPfrom selenium import webdriverclass DriverUtil(): def __in

2021-11-22 16:04:52 4924

原创 selenium操作滚动条滚动方法

一、应用背景在UI自动化中存在某些特殊场景,需要拉动滚动条到底部或者滚动到某个位置 才可以触发按钮点击二、使用方法1、在selenium中的execute_script调用js方法execute_script介绍:在当前窗口/框架 同步执行javaScriptscrollTop:这个元素的顶部到视口可见内容(的顶部)的距离滚动条在div内嵌的demo:#获取内嵌div的位置 并设置滚动条移动的值js="document.getElementById('agreementMain').sc

2021-11-22 14:42:30 15529

原创 Python 学习之 类与对象(一)

一、Python 类的概念在Python中类是一系列事物的统称,同类事物必定具有相同的特征。日常事物的特征根据特性分为状态和行为,对应到类中是变量和方法创建类:class Father: def __init__(self): pass1、init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法2、self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数类的组成部分:1、类名称2、

2021-11-17 14:03:27 4521

原创 Python import导入的用法

一、基本概念:模块:module 通常是以 .py后缀的文件一个模块里面包含着类和函数,一个函数里包含着代码import语句用来导入其他python文件(称为模块module),使用该模块里定义的类、方法或者变量,从而达到代码复用的目的二、import的用法一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行1、导入python自带的内置库import json2、导入自己写的另一个模块import my_set_module ##这是包名,包

2021-11-16 13:55:20 8343

原创 Python format的用法

一、format的作用Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序二、format的例子1、不指定位置,按照默认顺序print("{} {}".format("hello","word"))hello word2、设置指定位置print("{1} {0}".format("hello","word"))word hel

2021-11-09 14:06:21 7404 1

原创 Unittest Skip装饰器详解

一、Skip装饰器的作用在测试用例中如果想跳过某些用例进行其他的用例的执行,可以使用skip装饰器来实现二、Skip装饰器的例子import unittestclass Test(unittest.TestCase): def setUp(self): pass @unittest.skip("无条件跳过") def test_1(self): print(1111) # 第一个条件返回值为true时 跳过执行 ,第二个参数为说

2021-11-05 14:02:31 4692

转载 Django Model操作

前言Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞:创建数据库,设计表结构和字段使用 MySQLdb 来连接数据库,并编写数据访问层代码业务逻辑层去调用数据访问层执行数据库操作ORM是什么?:(在django中,根据代码中的类自动生成数据库的表也叫–code first)ORM:Object Relational Mapping(关系对象映射)类名对应------》数据库中的表名类属性对应-

2021-10-28 11:13:10 4333

原创 Django models模块字段注释

models字段注释models.CharField 用来存储字符串,必须制定范围models.AutoField 根据可用id自动递增的整数字段。通常不需要直接使用它;如果不指定主键字段,则会自动将主键字段添加到模型中 models.DateField 使用Python的datetime.date实例保存的日期。auto_now = True:每次保存对象时,自动设置该字段为当前时间;auto_now_add=True:对象第一次被创建时自动设置当前时间。需要注意的是,自动保

2021-10-25 14:11:06 5246

原创 Django中Model模块的操作-创建表

一、Model中添加要创建表的信息class Automated_system(models.Model): id = models.AutoField(primary_key=True) name = models.CharField('系统名称', max_length=50, unique=True, null=False) # 打印对象时返回项目名称 def __str__(self): return self.name class Me

2021-10-19 14:30:12 4346

原创 Jmeter分布式压测

一、jmeter在Windows环境下的分布式压测分布式压测我理解的就是有一台主控机和几台压力机。主控机通过远程控制压力机启动测试,来实现系统不同级别访问量情况下的性能验证。操作步骤如下:1、启动jmeter自动化工具,界面显示如下图所示2、在“测试计划”单击鼠标右键,选择【添加】->【线程(用户)】->【线程组】,添加一个线程组3、添加线程以后,设置线程组。“线程组”可以类似于虚拟用户组,设置“线程数”为100,即我们要测试的是100个用户并发的情况;“Ramp-Up Perio

2021-10-18 16:43:19 9742

原创 Jmeter入门教程之逻辑控制器(三)

一、循环控制器:设置请求的循环次数或永远循环,可用于压力测试二、简单控制器:测试用例顺序执行将请求分组归集在一个简单控制器中,可以理解成一个模块,使得脚本结构更清晰。对JMeter脚本运行没有实质上的影响三、事务控制器:将多个请求放 在同一个事务中,可以用于测试执行嵌套测试元素所花费的总时间,即相当于用户进行一系列操作的测试,只有整个事务控制器定义的事务成功,才算成功Gegerate parent sample:聚合报告中只显示事务控 制器的数据,不会显示其中 的各个请求的数据Include

2021-10-14 17:04:13 1916

原创 jmeter 保存/浏览 报错 com.github.weisj.darklaf.ui.filechooser解决办法

报错内容:com.github.weisj.darklaf.ui.filechooser.DarkFilePaneUIBridge$DetailsTableModel (in unnamed module @0x17c386de) cannot access class sun.awt.shell.ShellFolder (in module java.desktop) because module java.desktop does not export sun.awt.shell to unnamed

2021-09-24 17:40:36 1812

原创 Appium 真机测试

Appium 真机测试前提:Appium与adb已安装完毕一、获取手机的设备号1、手机设置开发者模式2、打开usb调试授权3、输入adb devices -l 命令 ,获取设备号二、Appium参数配置1、点击编辑配置,配置环境变量2、点击启动服务器3、配置Appium参数platformName iOS, AndroidplatformVersion 版本号de

2021-06-24 13:27:05 2360 3

原创 Python 常用的函数

一、数字常用函数1、abs(x) 返回数字的绝对值,如abs(-10) 返回 102、ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 53、floor(x) 返回数字的下舍整数,如math.floor(4.9)返回 44、max(x1, x2,…) 返回给定参数的最大值,参数可以为序列。5、min(x1, x2,…) 返回给定参数的最小值,参数可以为序列。6、round(x,n]) 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数二

2021-06-09 16:21:02 1658

原创 Python的基础数据类型简介

一、基础数据类型Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)二、Numbernumber 有4种 int、float、bool、complex(复数)P3中只有一种整数类型 int,表示为长整型,没有 p2 中的 Long常用的数值计算方式加

2021-06-09 14:04:31 1045 2

原创 Jmeter入门教程之配置原件(二)

常用的配置原件1、HTTP请求默认值配置我们需要进行测试的程序协议、地址,端口号当所有的接口测试的访问域名和端口都一样时,可以使用该元件,一旦服务器地址变更,只需要修改请求默认值即可2、HTTP信息头管理器Jmeter向服务器发送http请求(get或者post)的时候,往往后端需要一些验证信息,比如说web服务器需要带过去cookie给服务器进行验证,一般就是放在请求头(header)中,因为对于此类请求,在Jmeter中就可以通过HTTP信息头管理器,在添加http请求之前,添加一个HT

2021-04-21 15:06:25 1394

原创 Jmeter入门教程之线程组(一)

Jmeter线程组测试计划-右击-添加-线程(用户)setUp线程组在线程组运行前先被运行,通常用于初始化工作,例如建立数据库连接、用户登录,批量用户登录等tearDown线程组顾名思义在线程组运行完成后执行,一般用户执行删除用户,清除数据等线程组测试计划中核心任务名称:线程组自定义名称注释:添加的一些备注说明信息,设置后,在目录树中鼠标悬停会显示配置的注释信息在取样器错误后要执行的动作①.继续:即取样器执行错误后,仍然继续执行后续的操作,直到整个线程完成;(默认)②.Star

2021-04-20 17:12:42 1949

原创 Python unittest 上一个接口值作为下一个接口的参数

unittestz 上一个接口值作为下一个接口的参数在使用unittest过程中,发现有时候如果想在测试用例之间共享变量,无法直接实现。查询之后发现解决方式如下:setupclass里设置globals().[“xxx”]变量,不同用例之间可以实时共享参数变动一、A接口的返回值传到B接口import requestsclass TestGoods(unittest.TestCase): def setUp(self): #定义globals self.g =

2021-04-15 16:08:39 2865 1

原创 Python unittest执行测试用例顺序坑点

背景:在一个testcase类中,存在多个接口方法,其中A接口的值要作为B接口的参数,B接口的返回值要作为C接口的参数,通常的解决方法是使用unittest中的globals 来进行参数管理。但是在执行中缺老是报错import requestsclass TestGos(unittest.TestCase): def setUp(self): pass def test_one(self): print(111) def t

2021-04-15 13:36:17 1702

原创 Django-多数据库配置及自定义Sql教程

Django-多数据库配置及自定义Sql教程一、根目录文件 Setings.py配置1、找到文件中的DATABASES,复制一份之前的default,有几个可以写几个,名称可以自己定以Mysql为例DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '', 'USER': '', 'PASSWORD': '', 'HOS

2021-04-07 09:37:51 1477

原创 Django教程之Ajax页面无刷新数据回显

Django教程之Ajax页面无刷新数据回显问题场景:在日常工作中会涉及到好多查询信息,有根据手机号的,有根据人,还有一些是因场景而定的特殊查询,需要频繁的去数据库中写sql去查询,所有就想做一个运维小工具,让人使用起来更方便一些前提条件:工具查询列表(页面有点丑陋,回头再写个样式)数据库结构:id,name,url为主要结构其中url 目的为 相对应的html页面比如:手机号 对应 phone.html姓名 对应 name.html等根据本地数据库中的数据,展示列表,然后点击进行不

2021-04-02 16:20:52 1910 1

空空如也

空空如也

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

TA关注的人

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