自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 pytest与unittest对比

1.unittest测试文件以test开头,测试方法以test开头;pytest测试文件以test开头,测试类以Test开头,方法以test开头2.unittest执行,需要使用unittest类提供的discover方法,收集测试套件,然后通过beautifulreport提供的report方法执行并生成测试报告;pytest执行,可以通过命令行的方式,结合allure插件,执行指定目录的测试文件并生成allure报告3.unittest断言可以使用其提供的assertEqual、assertTru

2023-11-17 11:00:10 373

原创 记录我在实际项目中针对微服务特性做的一些测试

实际手工测试很难发现这类问题,那么可以在接口测试的基础上,增加类似于“契约测试”的策略。我们可以将接口的全部响应字段的key记录下来,在后续进行接口自动化时,校验这些响应字段是否发生改变(减少/修改),如果出现改变,那么就通知测试人员去推动处理。3.当数据在redis存在、db不存在时:某些场景比如帖子的浏览量计数、转发量计数,会先在redis计数再同步到db,这种情况下需要检查数据一致。做这类测试,我一般会把B服务给干掉,做完业务流程后再启动B服务,模拟服务崩溃的情况,看数据能不能正确写入崩溃的服务。

2023-10-08 20:41:23 298

原创 redis如何测试

2.业务开发过程中,有时候对应高频访问的热点信息,比如活动的排行榜、组队活动的队伍信息等等,对这类数据会做redis缓存处理。由于redis的读取性质,可以做到快速查询、并减少服务器资源消耗和数据库的压力。c.新增、更新缓存数据,该数据与数据库是否一致,该数据的过期时间是否与设计的一样。e.针对不同场景,如缓存有数据、缓存无db有、缓存db均没有数据,进行并发测试。1.作为常见的nosql数据库,redis的特点是高性能,高速查询。a.评估针对某种场景,使用缓存是否必要。b.评估缓存过期时间设置是否合理。

2023-09-21 07:46:21 250

原创 记录下第一次搭建测试平台

说在最前1.与业务关联不紧密的测试平台不是好平台2.反对一切唯kpi论的工具3.大家说好才是真好,不好用就是不好用什么时候该搭建测试平台?**首先,跟团队规模有关。**如果企业的测试团队只有2、3个人,且短期内看不到团队扩张的可能性;那么搭建一个专供测试使用的平台,实属人力的浪费。**其次,跟团队人员配比挂钩。**如果团队人数多了,大多数团队都会配备“高、中、初”级别的工程师以降低用人成本,由初级工程师做相对初级、简单的工作;相对地,他们技术上也会稍弱一些。此时,一个合理的、实用性强的平台,通过

2022-04-07 13:46:59 448 2

原创 【解决方案】关于unittest的BeautifulReport生成报告失败的问题

原因:beautifulreport生成的报告,html文件是有一个样板文件的。通过浏览器访问link文件可以看到,它使用的bootstrap.min.js与bootstrap.min.css文件已失效,所以报告的样式渲染失败。解决方案:找到python环境目录,比如我的是E:\python,进入Lib\site-packages\BeautifulReport\template,修改template.html,把bootstrap.min.js与bootstrap.min.css的链接替换掉就行。具体你

2022-02-11 15:29:53 1835

原创 excel编写的测试用例转成xmind格式

软件开发过程中,测试工程师必不可少的一项工作就是编写测试用例,进行测试评审(设计评审/用例评审)。写用例常用的几种方法无非就是用excel写,或者xmind这种思维导图形式。而xmind具有条理清晰的特点,所以测试评审时为了提高效率,很多团队会采用xmind文件进行评审。故博主码了一个将.xlsx文件转为.xmind文件的程序,供大家使用。代码粗糙,能跑就行哈哈。import xmindimport osimport shutilimport zipfilefrom openpyxl impor

2022-02-10 13:49:58 3430 8

原创 【小工具】分享一个课堂老师点名的小工具

声明:原创,但很菜;仅供小白学习、有兴趣的老师点名使用直接可以使用的工具:链接:https://pan.baidu.com/s/1SY0PPkv5JujTW5uPuRN79g 提取码:rofp源码:# -*- coding: utf-8 -*-# @Time : 2021/9/27 17:13# @Author : 焦海俊# @File : interface.py# @Software: PyCharmimport tkinter as tkimport xlrdim

2021-12-02 14:57:29 541

原创 Jenkins实现selenium+pytest+allure自动化持续集成

环境:win10所需:jdk、tomcat、jenkins、git、本地项目一、安装并配置jdk(略过)二、安装git与maven(略)maven安装教程参考:MAVEN下载与安装三、安装tomcat1.访问tomcat官网,下载win 64/32的tomcat**注意:**下载core下面的文件2.解压即可用,并配置环境变量(略)四、下载jenkins并将下载后的war包放在tomcat安装目录下的webapps下此时启动tomcat(dos窗口下进入tomcat bin目录,s

2021-08-21 13:08:33 454 2

原创 第四篇:PO分层模式--分离业务流程与页面元素操作

PO模式原理介绍请参考:PO模式分离具体代码demo如下:

2021-06-16 22:27:30 471

原创 第三篇:利用conftest实现前置与后置处理

不了解conftest的朋友,请先了解一下相关的实现原理:conftest的作用简单来说,conftest中定义一个以_fixture结尾的函数,那么用例在执行的时候会自动逐级搜索该函数,并前置或后置的运行它。代码如下:如上,该函数调用了第二章所讲的driver.py下的login函数,实现用例执行前的初始化操作:打开浏览器,登录网站。yield之后定义的内容,作为后置处理,在一个session执行完之后执行关闭浏览器的动作。这里所说的session,是根据@pytest.fixture(scope

2021-06-09 22:42:02 979

原创 第二篇:启动一个浏览器程序

想要实现ui自动化,势必要先启动一个浏览器,然后才能打开我们想测的网站,进行一系列的测试。selenium提供了一个webdriver的模块,通过它我们可以启动指定的浏览器,如谷歌、火狐等。具体用法如下:这样,我们在其他地方如果想启动浏览器,那么直接调用driver.BasePage().login()即可。...

2021-06-09 22:25:50 163

原创 【selenium+pytest+allure--从0搭建ui自动化测试框架】第一篇:框架介绍

写在最前:由于之前是使用的RF框架进行接口自动化测试工作,导致虽然已经写了许久的自动化,但代码能力较差。所以在这里给碰巧阅读到系列文章的伙伴们打个招呼,若文章存在不足之处,还请大家指点出,本菜鸟不胜感激~~框架目录整体展示各目录的主要作用大概如图所示,通过参考网上各种范例,并结合自己项目最后落地。后续文章会详细介绍各目录的功能,以及按模块分享自己的代码。再次希望大家能够指点不足之处!...

2021-05-24 14:25:49 319

原创 robot framework--一个小白的成长之路(持续更新)

不知不觉接触RF框架也好久了,从一开始的四处求“医”,到现在的八方求助,真是心酸~~回过头来发现,日常编写脚本过程中有些百度到的知识并没有很好的总结下来,以至于后来再次碰到的时候又会一头雾水。所以特地用本文来记录,与大家共同学习,也希望有高手能够指点一二,感激不尽。...

2020-12-23 14:30:08 96

原创 jmeter--压力测试(一个查询发起多个请求,模拟多用户同时点击查询)

场景:web页面上有一个查询功能,查询出的信息很多,会同时调用多个接口。为保证多用户同时查询时,服务器保持安全稳定且接口响应时间符合用户预期;故需要进行压力测试。工具:jmeter(开源、简单易用)测试思路:创建多个线程组,每个线程组下带有一个请求;每个线程组设置一定的并发数(即线程数),用来模拟用户数;ramp-up时间指在N秒内启动这些线程;每个线程组下加一个同步定时器(synchronizing timer),设置模拟数量=并发数。这样做的目的是:等到N个线程全部准备好,同时发起N个线程,即同时

2020-12-09 17:45:20 6823

原创 robot framework--基于requestlibrary的问题总结

最近项目在做全量自动化测试,在过程种有一些这样或者那样的问题;本文用来自己总结,方便后续再次踩坑,也希望能给各位初入自动化测试的小伙伴一些帮助~2020-11-10网站上如果某些uri是类似的,比如:http://168.63.65.248:8095/fof/api/asset/ 和 http://168.63.65.248:8095/fof/api/asset/categoryList因为自己不太懂,只能自己形象的比喻它们存在父子关系;在这种情况下,如果对http://168.63.65.2

2020-11-10 16:43:05 247

原创 robot framework--post请求接口自动化

我们常接触到的接口请求类型大多是get、post,其他诸如put、delete等等都很少碰到(除非特殊业务);而在get、post中我们又更经常碰到get请求,post较为少见;今天在写自动化用例的时候刚好碰到一个post,很久没写过了一下子没想来怎么去写,于是在这里简单记录一下,方便以后学习。最近一个月未来现金流分析 ${cookie} ${Xsrf_token} sign in_uat ${systemname} ${env_type} ${host} ${

2020-10-09 17:43:30 313

原创 robot framework cookie传递的两种方法

背景:最近由于项目需要进行接口自动化,自己也很久没用过了,于是自己网上找了一些实例。有一个需要传递cookie的接口:先登录网站,响应头set-cookie返回sessionid,在后续的修改用户等接口中需要带上该sessionid。于是自己网上参考了一些文章,利用requestlibrary跟httplibrary.http这两个库中的关键字写了两种方法,用例有些繁琐,可能思路有些绕弯了,希望有大佬指点一二,感激不尽。用到的library:Library RequestsLibraryLib

2020-09-10 17:33:40 1124 2

原创 robot framework 编写登录接口自动化脚本

接口文档:请求消息POST /api/mgr/signin HTTP/1.1Content-Type: application/x-www-form-urlencoded请求参数http 请求消息 body 中 参数以 格式 x-www-form-urlencoded 存储需要携带如下参数,username 用户名password 密码响应消息HTTP/1.1 200 OKContent-Type: application/json响应内容http 响应消息 body

2020-09-09 21:08:58 1335

原创 robot framework 对页面弹出框进行操作

背景:在平常上网过程中,通常会碰到一些网页跳出通知栏,或者选择框需要用户确认/取消。在RF框架中提供了几种关键字去操作相应的弹出框,这里我自己做一些简单的归纳方便日后学习使用。参考的网站依旧是白月黑羽制作的。代码:几种页面弹出框 Open Browser http://cdn1.python3.vip/files/selenium/test4.html chrome Set Browser Implicit Wait 5 Maximize Browser Wi

2020-09-07 14:53:30 2078 2

原创 robot framework--几种常见按钮

背景:在web页面上,我们经常会遇到一些需要用户手动点击选择的按钮,有些是单选,有些是多选,还有一些下拉框去选择。对于这些操作,RF提供了相应的关键字供我们实现功能。这里我借用大佬 白月黑羽 教程里的网站,做一下总结,方便后续复习。详解:前两种,单选多选跟正常定位元素一样,只需要定位到想要的元素click就行了。这里需要注意的是,在多选按钮下,如果页面默认勾选了其中A选项,我们需要勾选B和C,我们需要先把A点一下进行去除,再点击B和C即可。对于下拉框,我们可以使用关键字Select From L

2020-09-07 11:32:23 917

原创 robot framework--for循环操作web页面元素、切换窗口

背景:最近开始拾起RF框架的UI自动化,碰到了一些问题,于是用一个简单的用例来总结一下。需求:测试百度首页的热搜超链接是否正确。分析:首先我们要登录到百度首页;然后会发现首页中有多个热搜链接,F12观察发现这几个链接的元素可以用同一个css表达式来选中:css=.hotsearch-item .title-content-title,所以我们不必要一个个去点击,可以用Get WebElements关键字来获取存放到一个列表中,去遍历该列表从而减少冗余的操作实现过程:1.定位元素:这里我使用c

2020-09-04 12:38:27 917

原创 python--列表remove的坑

最近要面试,所以把一些基础的东西看了看;看到remove()表示这还不简单?但是发现我想把a = [1, 1, 2, 1, 3, 4]这样的列表,删除第四个元素的时候,下意识就使用了a.remove(a[3]),可是发现返回的结果是[1, 2, 1, 3, 4];想了一下,原来是因为,remove方法是针对的是列表中对应的元素;由于我a[3]==1,故相当于我是把a列表中的第一个值为1的元素给删了,所以才呈现这样的结果;感慨一下:我还是个小菜b啊...

2020-08-25 13:54:53 152

转载 (转载)python--带单下划线和双下划线的变量

本文转自博客园微博,供新手学习使用

2020-08-25 08:41:02 128

原创 python--读取特定的txt文件,并统计文件中的词汇

去年刚学python的时候,用open的方法写了一个脚本,简化了我自己测试维护环境的工作量(通过ipop工具输出的回显,去统计回显中我想要的字符)。最近刚好学习嵩天老师的课,讲到了这个方法,用来统计某个文档中的人名。索性自己写了个类,刚好巩固一下。下面是代码:# -*- mode: python ; coding: utf-8 -*-class Book(): """定义一个关于书本txt的类""" def __init__(self,route): self.route

2020-06-17 22:45:44 2434

转载 app--查看包名的五种常用方法

转载自查看安卓app包名的5种方法 方法一:输入命令:adb shell am monitor然后启动需要获取包名的应用方法二:adb shell pm

2020-06-16 10:59:15 10404

原创 jmeter--如何设置成中文模式

jmeter是一款很好用且用途极广的测试工具,但是下载后默认是英文版本,这对我这种英文能力较差的人来说很烦恼。如何切换成中文呢?很简单,一、打开菜单栏上的option二、选中choose languages即可选择简体中文...

2020-06-15 18:25:21 192

原创 python--递归之绘制科赫雪花

最近南京天气极热,给大家伙整个小雪花儿降降暑上才艺:# -*- coding: utf-8 -*-import turtledef koch(size,n): """函数koch用递归思想绘制一段N阶曲线""" if n == 0: turtle.fd(size) #递归基例,0阶曲线即为一条直线 else: for i in [0,60,-120,60]: #通过改变方向,绘制四条线段 turtle.le

2020-06-07 20:47:40 1711

原创 python--递归之汉诺塔游戏

汉诺塔游戏规则:游戏里有三根金刚石柱子,在A柱子上从下往上安从大到小顺序摞着64片黄金圆盘。玩家需要做的是把圆盘从下面开始按大小顺序重新摆放在C柱子上,利用B柱子作为过渡。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。游戏理解起来很简单,我们小时候应该都玩过,那么怎么用程序来模拟这一过程呢?在这里,我们可以用递归思想,问题将很容易得到解决。那么什么是递归思想,递归又应该如何使用呢?下面我将参照嵩天老师的递归函数课程来做一次粗略的介绍与总结。一、什么是递归?递归就是在函数内部调用

2020-06-07 12:03:59 347

原创 python--绘制七段数码管(复杂问题模块化)

话不多说,上代码# -*- coding: utf-8 -*-import turtle,timedef Draw_Gap(): """在一根根数码管之间形成间隔""" turtle.penup() turtle.fd(8)def Part_Draw(draw): """画出一根数码管""" turtle.pendown() if draw else turtle.penup() turtle.fd(40) Draw_Gap() tur

2020-06-05 11:39:37 497

原创 python--蒙特卡罗方法计算圆周率

前几天学习了嵩天老师的一节挺有意思的课,讲的是通过蒙特卡罗方法来计算圆周率。蒙特卡罗方法在这里就不多描述了,有兴趣的朋友可以看一下。蒙特卡罗方法主要思想是:在一个正方形中按照r/2为半径画圆,那么圆的面积跟单位正方形面积之比就是圆周率的相关数据。代码如下:# -*- coding: utf-8 -*-import randomimport timenum = 1000*1000 #撒点总数为numcount = 0start = time.perf_counter() #通过

2020-06-05 10:00:33 1236

原创 python--单行刷新输出(进度条显示)

python单行刷新输出(进度条显示)背景:今天学习了慕课网上,嵩天老师的python文本进度条的课程,课堂代码如下:import timescale = 50print("这里是进度读取区域".center(58,"#"))start = time.perf_counter()for i in range(scale+1): a = "*" * i b = "." * (scale-i) c = (i/scale) * 100 dur = time.perf_

2020-05-22 22:07:03 2493 1

空空如也

空空如也

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

TA关注的人

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