- 博客(39)
- 收藏
- 关注
原创 软件测试(测试开发之测试工具开发5——炫酷的界面)
学完前面的章节,我们大概对pyqt有了一点初步相关基础知识的认识。现在可以来学着弄点更有设计感的界面了。我们这里一起来学习下,Wanderson大佬分享的的PyOneDark客户端的设计。这里先上成品图是不是看上去就很炫酷。那我们就一步一步,看看大佬是怎么设计的。一、Pyside6大佬的这个是用的pyside6去实现的,至于pyside和pyqt的关系,大家自行百度,基本大同小异,前期基础几乎一样。首先,下载pyside6pip install PySide
2022-04-14 03:36:46 2552 1
原创 软件测试(测试开发之测试工具开发4——美化小技巧)
之前我们已经学过了,如何画控件以及如何布局。但是我们肯定不太满意的,感觉就,挺难看的。那我们就学习下,如何美化,让它变得更加的高大上一点。我们先回顾下,之前画的demo的样子一、取消标题栏self.setWindowFlags(Qt.FramelessWindowHint) 这里注意,取消标题栏后,就无法移动了,我们需要重写三个方法二、无边框移动 def mouseMoveEvent(self, e: QMouseEvent): # 重写移动事
2022-04-11 02:15:57 3791
原创 软件测试(测试开发之测试工具开发3——基础布局)
上节,我们讲了怎么画控件,以及监控增加对应的事件方法。这节,我们讲下布局,可能会涉及到一些其他的控件元素。一、绝对定位像我们之前写demo时,就一直用的绝对定位——以像素为单位指定每个小部件的位置和大小这种定位方式,在稍微复杂一点的界面改变整体局部的时候,会比较繁琐。二、横向和纵向布局QHBoxLayout——横向布局类QVBoxLayout——纵向布局类这就是横向布局的效果了这就是纵向布局的效果。有些同学可能会觉得,这看着不太对劲啊,能.
2022-04-07 08:20:29 420
原创 软件测试(测试开发之测试工具开发2——基础控件与事件方法)
上节,我们初步了解了下pyqt是什么,并且写了个helloworld的小demo。今天我们正式的来学下,怎么来画它。这边不会采取官方教程那种特别全面的介绍方式。因为它真的太多了,很多东西都平时用不上,我们就讲几个比较常用的组件。一、初始模板上图就是一个初始的QT模板,只设置了窗口位置,窗口大小和窗口的标题。我们运行下,看下效果。大概就是这样,白茫茫一天,啥都没有。然后我们就可以开始画图了。二、按钮pyqt的按钮是QPushButton 这个控件类。
2022-04-06 01:41:53 4341
原创 软件测试之从0到1完成UI自动化测试框架搭建系列(3)
上节,我们讲了下,如何运用uiautomator2+atx+pytest进行自动化的单元测试。这节,我们再思考下,如果我们每条用例,都去一步一步,先元素定位,然后写操作,然后写各种方法。那这个代码量是不是就有点偏多了。另外也不方便维护,比如哪天APP的某个元素定位迭代修改了,还得一个一个去改对应用例的逻辑。所以,我们这边引入了PO设计模式。将uiautomator2方法,元素定位,页面操作,测试用例全部分离。这样可以大大减少我们代码量,更为方便的维护我们的测试用例。PO模式页
2022-04-04 22:52:01 846
原创 软件测试(测试开发之测试工具开发1——helloworld)
这期我们来学习下,测试工具的开发。在我们实际的测试工作中,经常会写一些脚本,来辅助测试。比如测试数据的制造,测试场景的制造等等。可能你写的脚本,很方便,可以推广给你的同事或者朋友。但是他们看不懂你的脚本,又或者没有脚本所依赖的环境,怎么办呢?这个时候,就可以编写图形界面化的测试工具了~这个我们可以学习一下,python中比较热门的GUI库——pyqt6.PyQt6python最热门的GUI库,包含一系列的模块,编写我们想要的桌面程序。我们简单的讲,我们就整2部分,画图 和 写逻辑
2022-04-02 00:48:04 7282
原创 软件测试之从0到1完成UI自动化测试框架搭建系列(2)
上节课,我们学会了如何使用uiautomator2+atx编写简单的android自动化脚本。但是有个问题,大家可以思考下,光用自动化脚本让它自己动起来,是不是缺了点什么?我们写测试用例的时候,是不是经常写:用例名 + 前置条件 + 操作步骤 + 预期结果 + 实际结果。用这个方法去判断一条用例是否通用?自动化脚本呢,充其量,相当于操作步骤。我们还需要 部分前置条件,预期结果,通过预期结果和实际结果的比对,来判断用例是否pass。所以我们这里引入了单元测试框架pytest。
2022-04-01 01:51:54 3462
原创 软件测试之从0到1完成UI自动化测试框架搭建系列(1)
我们这个系列主要是讲如何进行安卓的ui自动化的实现方案。大致方案是 uiautomator2+atx+pytest+po+allure我们由浅入深,一个一个模块学过去,学完发现其实也都是些很简单的东西~uiautomator2是一个python的第三方库,用于android自动化。1、下载uiautomator2pip install uiautomator22、连接手机usb线连接安卓手机,打开开发者调试模式,使用adb命令可以查询到对应设备号adb devic
2022-03-31 02:29:31 1283
原创 软件测试(自动化之web端自动化5——selenium等待机制)
上节讲了关于元素交互的几个基础操作。然后我们在不断的模拟用户交互的时候,有时会遇到一些问题。比如,点击刷新按钮后,页面刷新较慢,刷新的过程中,代码无法识别到元素,产生相关的报错。这种场景我们通常是采用“等待”的方式去完成的。这里我们介绍三种等待方式:一、强制等待所谓强制等待,就是指定一个时间,我们去固定这个时间等待,等待时间完成后,再进行下一步。比如这里的 time.sleep()方法。这个是为了方便我截图,在完成交互后,等待2s,展示页面,再去关闭会话。上面介绍的强
2022-03-15 08:25:52 1219
原创 软件测试(自动化之web端自动化4——selenium元素交互)
上节,我们学习了下怎么进行元素定位。那么我们定位到某个元素之后呢,就要去对这些元素进行相关的交互了。这里我们介绍下仅有的五种元素交互方式1、clickclick是点击的意思,它适用于任何元素。常用于点击页面相关的功能按钮2、send_keyssend_keys是发送键位,仅适用于文本字段和内容可编辑元素。常用于在内容编辑控件输入一直内容,比如搜索栏输入搜索内容3、clearclear是清除内容,仅适用于文本字段和内容可编辑元素这个和上面的send_keys
2022-03-13 03:21:33 855
原创 软件测试(自动化之web端自动化3——selenium元素定位)
上节,我们讲了web端自动化脚本编写,大致分哪几步,这里,我们展开来谈一下“元素定位”。首先,我们知道了,webDriver元素定位有这8种,那么这8种,我们要怎么用,如何根据场景,优先选择适合的呢?这里还是拿百度首页举例好了。我们先打开百度首页然后按F12我们找到这个select 元素控件的功能按钮然后选中你想定位的元素控件点击控件这里我们可以看到前端具体的代码,很多信息,我们都能清晰的看到了。比如控件的id,na...
2022-03-13 02:53:19 1769
原创 软件测试(自动化之web端自动化2——selenium脚本编写)
上节我们把selenium的库和浏览器的驱动都装好了,并且写了个打开百度的小demo。这次我们介绍,怎样去写web端的自动化脚本。一、驱动实例开启会话driver = webdriver.Chrome()二、打开网页链接driver.get("http://www.baidu.com")这里我们以百度首页为例三、定位元素webDriver提供了8种不同的元素定位方法,这个我们看具体情况分析。内容篇幅有限,我们下次单独拿出来一一介绍,这次我们就举例看看sear
2022-03-13 01:12:23 787
原创 软件测试(自动化之web端自动化1——selenium前置准备)
软件测试的进阶方向,有自动化、性能、安全等多个领域。愈来愈内卷的环境下,作为一个合格的测试工程师,基本是多个领域都得懂点儿。今天我们先一起学习下前端的自动化要如何进行。一、下载安装前端最主流的自动化框架,应该就是selenuim了。1.1 下载第三方库这里我们在命令行用pip下载pip install selenium1.2 下载浏览器驱动Selenium 通过使用 WebDriver 支持市场上所有主流浏览器的自动化。这里的WebDriver是一种API和协议,每个不
2022-03-12 03:35:03 802
原创 软件测试(测试开发之前端页面开发1——html)
html是超文本标记语言,是用标签画网页的语言。我们创建一个html后,它的标准样式是这样的。这里我们介绍下,所谓标签,它的格式大概是这样的标签格式<标签名 标签属性>标签内容</标签名>例如<html lang="en"> </html>标签嵌套标签之间可以相互嵌套例如<html><head></head></html>网页结构基础结构<html>&l
2022-03-08 19:22:25 445
原创 软件测试(测试开发之后端接口开发3——请求体)
上节我们讲了如何设置接口路径和接口参数。但是那种接口后面加参数的,一般只有get请求。那我们其他请求方式(如post)呢?没错,就用请求体发送。老规矩,先上代码这里我们介绍下,我们新引入了一个pydantic库。pydantic —— 使用Python类型提示来进行数据验证和设置管理的库。从上图从,我们先创建了一个数据模型Student,然后声明了它的三个属性和类型。同样的方式,在接口方法里面作为参数传入,然后运行一下这里值得注意的是,如果按以上步骤去做类型声明,
2022-03-04 05:15:21 2234
原创 软件测试(测试开发之后端接口开发2——路径&请求)
上次我们用FastAPI写了个helloworld,这次我们继续深入,内容不多,都挺简单的,太难的和用不上的,我们直接跳过,自己想了解再去研究。一、路径参数之前我们写的那个helloworld的接口,访问的连接是http://127.0.0.1:8000这个是我电脑本地默认的连接与端口号。这个跟常见的接口有点不同对吧,例个例子就比如这个接口,它是由三个部分组成的,前面的是域名,中间的是路径,后面的是参数。那我们要怎么给它设置路径呢?直接上代码...
2022-02-26 22:55:11 633
原创 软件测试(测试开发之后端接口开发1——helloworld)
不会开发的测试,不是好程序员。在测试进阶的道路中呢,我们可能需要点亮一些新的技能,比如测试工具开发,测试后台开发等.有些同学可能编程基础,没那么好,看到这个就慌了。不要慌,我们由浅入深,一步一步来。我们还是用python的FastAPI去实现,一、下载FastAPIpip install fastapi[all]二、写个HelloWorld三、运行程序终端进入main.py所在目录,输入uvicorn main:app --reload启动成功,我们本地
2022-02-26 01:54:28 693
原创 软件测试(接口测试一:写接口)
服务端和前端的交互,都是前后端约定字段,后端提供接口,然后前端(客户端)去调用接口获取相关数据,然后在前端展示给用户。对于黑盒测试来说,我们作为专业的测试人员,发现bug后,首先要做的,并不是直接提单发,而是去定位相关问题的原因。...
2022-02-25 00:18:28 420
原创 python网络爬虫基础入门(一)
关于网络爬虫,爬取各类网站的资源。公认最好用的就是python语言了。我们先来看下,基础爬虫有哪几步?1、分析网站结构——我们可以打开某个网站,
2022-02-12 16:01:31 400
原创 软件测试(白盒测试入门之gtest测试)
一、gtest是什么gtest全程为GoogleTest,是一个跨平台的(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)C++单元测试框架,由google公司发布。如何去下载,调用,这个可以去找下相关教程,还需要先学下cmake相关的知识。篇幅有限,我们有空再讲。二、gtest能做什么gtest提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”我们直接举个栗子:我们写了一个a+b的加法函数,输入2个int型的数
2022-01-31 02:58:13 8011
原创 软件测试(1黑盒测试用例设计)
软件测试最基础的内容,就是测试用例的设计与执行。如何设计测试用例呢?这就需要我们结合相关的功能文档和测试方法去进行分析。一、多角度设计用例举个栗子,常见的面试题,给你一个杯子,如何去设计它的测试用例。功能测试:主要关注水杯基本功能1.1 水杯是否可以正常装水1.2 水杯是否可以正常喝水1.3 水杯是否有盖子,盖子是否可以正常盖住1.4 水杯是否有保温功能,保温功能是否正常保温1.5 水杯是否会漏水,盖住盖子拧紧后是否会漏水界面测试:主要关注水杯外观、颜色、设计等方面
2022-01-31 02:20:12 404
原创 使用H-lua框架制作魔兽争霸地图(13-练功房刷怪)
上一节,我们讲了练功房练功石。这节我们讲一下另外一种练功方式——刷怪升级。我们先看下作者给出的刷兵例子local counter = 10;htime.setInterval(3.00, function(curTimer) if (counter <= 0) then htime.delTimer(curTimer) end counter = counter - 1 hunit.create({ whichPlayer
2022-01-29 09:54:32 1641 1
原创 使用H-lua框架制作魔兽争霸地图(12-练功房练功石)
前面我们讲了难度选择,英雄选择,那么我们选择完英雄出来后,一般的防守地图,是会提供练功房给你进行升级的。练功房分两种,一类是通过击打类似木人桩、练功石获取经验,一类是刷怪出来通过击杀增加经验。那么我们这节先讲下练功石这个要怎么弄。一、物编-练功单位在units.lua下弄一个木人桩二、创建练功单位这里的henemy是敌对单位。这个之前好像没讲,想拓展的同学可以去看下源码。三、增加经验获取我们用单位伤害或者承伤去计算经验的增加onDamege是伤害,on..
2022-01-26 05:57:58 1362
原创 使用H-lua框架制作魔兽争霸地图(11-玩家屏幕信息打印)
前面学习了选择难度,以及酒馆选择英雄。这节我们学习下屏幕信息的打印。在我们游戏中,很多的提示信息,我们会在某些场景下打印出来到屏幕上,比如常见的:选择难度后,提示所有玩家,XXX选择了难度多少。基地被攻击时,提示玩家快去进行防守等信息。h-lua里面是用echo这个方法打印的,我们看下具体方法从方法定义中,我们可以看出,echo打印信息有多个参数,默认是打印给所有玩家,也可以控制具体打印给某个玩家,还可以控制打印信息的位置以及持续时间。那我们就打印几条信息试试:1、进入游
2022-01-25 03:08:07 3185
原创 使用H-lua框架制作魔兽争霸地图(10-酒馆英雄选择)
上节,我们学了开局如何选难度,这节,我们继续下一步,酒馆英雄选择。第一步,创建英雄:我们之前已经学了,利用h-lua的物编,去创建单位。我们这里创建下英雄。我们在units.lua模块下先创建一个叫天选勇者的英雄。第二步,创建酒馆:我们看下作者给的写法hhero.setBornXY(0, -300) --设定英雄出生点hhero.buildSelector({ during = 60, type = "tavern", buildX = -512,
2022-01-24 19:57:02 904
原创 使用H-lua框架制作魔兽争霸地图(9-开局难度选择)
前面,我们学习了一些物编的基础姿势。后面,我们继续学习,如何完整的制作游戏。今天学习进入游戏后,第一个事件,玩家难度选择。话不多说,上干货。我们在scripts的setup.lua下,写个对话框hdialog.create( nil, --自动挑选第一位玩家,让他选 { title = "选择难度", buttons = { "一般困难",
2022-01-22 18:22:22 3716
原创 使用H-lua框架制作魔兽争霸地图(8-物编-物品绑定技能篇1)
之前我们学习了,如何创建物品,也学习了如何给英雄绑定技能,这次我们学习下,如何给装备也绑定下技能。物品绑定技能作者给了个跳刀闪现的例子这里设置下物品的施法前摇,魔法消耗,冷却时间,点击方式,具体技能效果。ok,这个装备带闪现效果的demo我们就学会了。你也可以自己编一个技能,然后去绑定具体技能效果实现,可以加群讨论、交流hslk_ability({ Name = "主动技能一个", _onSkillEffect = _onSkillEffect(fu...
2022-01-19 19:03:26 861
原创 使用H-lua框架制作魔兽争霸地图(7-物编-物品合成篇)
前面学习了物品的创建,这次我们学习下,多个物品的合成首先,我们在items.lua下创建了三个物品物理学圣剑,霜之哀伤,火之高兴然后,我们在main.lua里面creat下“物理学圣剑”和“霜之哀伤”同时在items.lua中使用hslk_item_synthesis 。加入合成公式此时进入游戏后,会出现霜之哀伤和物理学圣剑在对应坐标点。控制单位捡起它们,自动合成为火之高兴物品合成,你学废了么?...
2022-01-19 16:54:08 2922 2
原创 使用H-lua框架制作魔兽争霸地图(5-物编-单位篇)
老规矩,先让我们看看作者的demo里面,是怎么写的好家伙,就2个属性,一个_parent父级,一个Name名字。这里解释下,作者在hpea这个父级模板里设置好了所有的属性,当然,你也可以自己去设置,当你进行设置的时候,就会覆盖父级模板中的那个属性。这个类似面向对象编程里面的继承。我们再看下这个单位,是如何在main里面使用的这里也是调用了hunit(单位模块)的create(创建)方法。在方法里面,声明了whichPlayer 归属玩家1控制然后绑定了下创建单位的名称“天
2021-11-07 08:56:29 1202
原创 使用H-lua框架制作魔兽争霸地图(4-物编-物品篇2)
上节课,我们已经看了作者demo里面构造的“物理学圣剑”,那我们也去整个装备试试看。除了攻击力,我们还有哪些属性呢?防御力,生命值,魔法值,攻击速度,移动速度,三维属性对吧。我们查查看,这些属性名字是啥。move 移动速度,取值0到522defend_green 额外护甲attack_green 额外攻击力attack_range 攻击范围attack_speed 攻击速度str_green 额外力量agi_green 额外敏捷int_green 额
2021-11-07 07:26:25 1044
原创 使用H-lua框架制作魔兽争霸地图(3-物编-物品篇1)
首先,我们要知道,物编分为哪几个类型1、unit 单位2、item 物品3、ability 技能4、buff 魔法效果5、upgrade 科技我们这节课就先来学习下单位的物编。打开demo项目代码,我们会发现,demo项目中,作者大人已经帮我们写了一个例子了。编辑了一个名为“物理学圣剑“的装备。class表示它的类型,为Permanent (永久的)——就是非使用次数的装备_attr 呢,则是它的附加属性,是attack_green(攻击_绿)增加987...
2021-11-07 06:29:54 2263
原创 使用H-lua框架制作魔兽争霸地图(2-项目结构认识)
一、框架结构当我们下载了h-lua代码后,框架结构是这样的,对不对。depend是框架所依赖的开发套件,这个我们不需要去管。我们最需要专心的是projects下的,我们创建的项目。二、项目结构如图,我们的demo项目创建后,出现了三个文件夹和一个lua脚本。hslk——是专门用来写物编的,比如单位、物品等。map——是地图文件,这个暂时我们也不需要管~scripts——是存放脚本文件的而main.lua是项目代码的入口。好的,那这节课就完了。...
2021-11-07 06:03:55 2169
原创 使用H-lua框架制作魔兽争霸地图(1-准备阶段)
一、下载框架git clone https://github.com/hunzsig-warcraft3/h-lua-sdk二、创建项目打开终端,在sdk.exe的目录下,输入./sdk.exe new demo这样,我们就在projects目录下,新建了一个demo项目了三、启动马仔输入命令,启动马仔,去编辑地图的地形./sdk.exe we demo四、启动测试./sdk.exe test demo输入测试命令,打开当前你的项目中地图的样.
2021-11-07 05:51:46 3202 5
原创 使用django完成一个测试用例管理平台的demo
1、首先,我们创建项目,test_case_management,这里简称tcmdjango-admin startproject tcm2、在tcm的项目下创建我们的应用test_case3、修改应用下的models.py,完成模型的定义并输入python manage.py makemigrations这条命令的作用是记录我们对models.py的所有改动,并且将这个改动迁移到migrations这个文件下生成一个文件例如:0001文件。然后输入python mana
2021-06-30 02:58:16 1653 1
原创 django入门学习
一、认识djangoDjango 是使用 Python 语言开发的一款免费而且开源的 Web 应用框架。由于 Python 语言的跨平台性,所以 Django 同样支持 Windows、Linux 和 Mac 系统。二、下载与安装 python下载:自行官网下载安装 django下载:pip install django 验证django下载是否成功:pip show django三、项目与应用创建项目 :django-admin sta...
2021-06-29 04:07:30 5377 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人