- 博客(59)
- 收藏
- 关注
原创 测试计划、用例、报告、缺陷报告总结
测试计划主要包含测试计划,测试背景,测试目的,测试输出文档,测试范围,任务分配,时间管理,测试环境,分险评估如何编写测试计划制定测试计划是测试管理过程中最关键的任务。根据IEEE 829,按照以下七个步骤准备测试计划。首先,分析产品结构和架构。设计测试策略。定义所有测试目标。定义测试区域。定义所有可用资源。以适当的方式安排所有活动。确定所有测试交付物。测试用例主要包含:测试编号 测试标题 优先级 预设条件 测试数据 执行步骤 预期结果 实际结果缺陷报告主要包含:缺陷标题,缺陷类型
2021-11-06 16:28:05
8125
1
原创 简单使用shell脚本
文章目录什么是shellshell的规则:shell开头必须以变量的规则输入语句用read输出语句用echo调用的时候脚本调用运算符比较运算符(数字)字符串判断:逻辑运算符计算if语句格式case循环语句Forwhile循环函数函数传参Shell中函数中默认存在返回值什么是shellshell(壳):命令解释器。Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理
2021-11-04 22:30:08
400
原创 re+jenkins持续集成
启动jenkins然后再在jenkins的插件中下载Robot Framework,点击直接安装安装完成创建项目添加运行执行文件,选择一下构建步骤中的它在jenkins中生成RF的测试报告下载插件groovy在构建中选中Excute system Groovy scriptSystem.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")在构建后选择Publish Robot Framework test resu
2021-11-03 22:34:35
231
原创 DOS下执行robotframework脚本
在当前python环境中的路径添加pybot.bat文件文件中添加@Echo offpython -m robot.run %*启动时添加路径即可pybot 项目路径
2021-11-03 21:38:22
226
原创 使用RF做ui自动化(web端)
使用之前所需环境SeleniumLibrary, chrome驱动安装:pip install robotframework-seleniumlibrary==3.0.0下载chrome浏览器对应驱动找不到和chrome浏览器所匹配的版本,可以找版本相差不多的启动比如浏览器版本是95.0.4638.69,可以去找95.0.4638.54相应的驱动:robotframework-seleniumlibrary安装好了在ride中的测试案例导入SeleniumLibrary扩展库打开浏览器
2021-11-02 22:17:47
605
原创 初次使用robotframework
robotframework特点1:编辑用例简单,可以以robot,txt,tsv或者html的格式编写用例2:自动生成html格式的测试报告和日志(HtmlTestRunner.py,allure)3:除了自带的类库外,还有很多的实用的类库4:可以根据项目的需要自定义一些关键字5:可以使用GUI的方式运行,可以和SVN或者GIT及Jenkins持续集成...
2021-11-01 23:20:37
230
原创 app自动化POM模型,yuml文件,数据驱动
文章目录POMPOM一般分为4层(和po模型差不多)basepage(封装公共的属性和行为)yaml 文件读取登录QQdemo:数据驱动POMPOM(page object model)页面对象模型,主要应用于UI自动化测试框架的搭建,主流设计模式之 一,页面对象模型:结合面向对象编程思路:把项目的每个页面当做一个对象进行编程POM一般分为4层(和po模型差不多)第一层:basepage层:描述每个页面相同的属性及行为第二层:pageobject层(每个的独有特征及独有的行为)第三层:testc
2021-10-29 22:02:21
441
原创 appium定位方法
文章目录定位元素的方法idclassxpath显示等待操作获取元素的方式text 获取元素的内容get_attribute() 获取元素属性值location 获取元素在屏幕上的坐标获取包名方法:current_package,获取启动名:current_activity事件swipe 滑动事件scroll滑动事件drag拖拽事件background_app() 应用置于后台事件TouchAction手势操作()tap 模拟手指轻敲一下屏幕操作press 手指按操作wait等待操作long_press()
2021-10-28 21:56:30
871
原创 Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException解决方法
原文链接:https://blog.youkuaiyun.com/dengachao/article/details/1005355361.截取uix文件adb shell uiautomator dump /sdcard/sc.uixadb pull /sdcard/sc.uix C:\Users\Y\Desktop\cs.uix注明:新手机地址改成:/data/local/tmp/**.uix2.截取截图adb shell screencap -p /sdcard/cc.pngadb pull /s
2021-10-28 18:36:52
2406
原创 appium录制脚本
环境准备java1.8.0、模拟器(夜神)、python3.8、androidSDK环境appium 官网下载andriodsdk
2021-10-27 21:39:59
350
原创 monkey命令
Money它可以相像一只猴子, 在电脑面前,乱敲键盘在测试。它主要用于Android的稳定性测试使用monkey测试手机所有应用# 执行monkey测试100次adb shell monkey 1000指定应用测试# 执行monkey测试100次只对com.kmxs.readeradb shell monkey -p com.kmxs.reader 100显示日志详细程度总共分3个级别,分别对应的参数如下 表所示:1、缺省值,仅提供启动提示、测试完成和最终结果等少量信息adb
2021-10-26 20:59:42
1304
原创 使用Testin云测试进行兼容测试
访问网址testin注册或登录Testin登录注册完成之后选择兼容测试报告上传apk然后完善信息上传完毕后点击企业测试随机50个机型,我选择是的第一个,有三个选项,自行选择即可显示结果
2021-10-26 17:47:56
371
原创 移动端adb常用命令
文章目录查看设备启动服务停止服务安装软件卸载软件覆盖安装查看系应用查看第三方应用文件传输将电脑文件传输到移动端将移动端文件传输到电脑adb shell 命令截屏查看手机cpu运行情况查看应用内存使用情况查看磁盘使用情况清除应用缓存查看电池状态查看电池信息查看日志日志的输出时间日志级别输出最近的日志查看设备adb devices启动服务adb start-server停止服务adb kill-server安装软件adb install apk路径卸载软件adb unins
2021-10-25 17:52:44
320
原创 selenium po模型
po在自动化中,Selenium自动化测试中有一个名字经常被提及PageObject(思想与面向对象的特征相 同),通常PO模型可以大大提高测试用例的维护效率优点:重用,业务和对象分离,代码结构清晰,方便代码维护设计模式PO的核心要素1.在PO模式中抽离封装集成一个BasePage类,该基类应该拥有一个只实现webdriver实例的属性2.每一个page都继承BasePage,通过driver来管理本page中元素,将page中的操作封装成一个个方法3.TestCase继承unittest.
2021-10-23 18:37:32
181
原创 selenium3综合使用
import timefrom selenium import webdriverfrom selenium.webdriver.common.keys import Keys # 键盘操作使用的是Keys类,一般配合send_keys使用from selenium.webdriver.support.wait import WebDriverWait # 导入显性等待的包from selenium.webdriver.support import expected_conditions as
2021-10-19 20:59:55
120
原创 selenium操作2
selenium高级操作selenium 表单selenium 表单driver.switch_to.frame(value)直接使用id值切换进表单driver.switch_to.frame(value)定位到表单元素,再切换进入el = driver.find_element_by_xxx(value)driver.switch_to.frame(el) ...
2021-10-19 19:48:12
111
原创 selenium操作
selenium 操作定位元素的八种操作id 定位name 通id定为class name 通过class伪类名定为tag name 通过标签定为link text 通过链接文本定位partial link text 部分链接文本定位xpath 通过xpath路径表达式定位css 通过点击操作高级操作获取所有窗口的句柄 driver.window_handles()通过窗口的句柄进入的窗口综合使用,查询五八同房源详情定位元素的八种操作id 定位find_element_by_id()# demoi
2021-10-18 19:10:19
137
原创 selenium Web自动化测试
框架是什么框架(framework)是其实就是相当于精装房,各种工具很齐全,可以直接使用的,它也是其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。selenium工作原理webdriver工作原理环境配置了解selenium,及环境准备在火狐上安装Selenium IDE使用selenium IDEselenium api基础驱动浏览器对象demoimport timefrom selenium import
2021-10-15 21:05:55
196
原创 使用xpath和css定位html中的元素
XPath 是一门在 XML 文档中查找信息的语言根据节点匹配示例位置匹配示例元素匹配示例管道符 |其他//*[text()=“x’x’x”] 全部//title/text()Css示例# Demo:import requestsheaders = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
2021-10-11 19:08:11
107
原创 pytest和allure生成测试报告
文章目录pytest简介pytest和unittest区别pytest使用自带的python-html 生成测试报告由于自带生成测试报告的东西不是界面过于简单和不太美观可以使用allure使用之前得要allure的环境变量(选择allure-2.13.2\bin)python需下载allure_pytestAllure常用的几个特性读取文件(和unittest是一样的,拿到数据后就可以进行操作)读取xml文件读取csv文件pytest简介pytest命名规则使用pytest之前需要安装一下pytest
2021-10-09 21:37:48
382
原创 unittest单元测试
文章目录UnittestTestFixture:TestCase 测试用例TestSuite 测试套件TextTestRunner 执行测试用例断言生成测试报告读取文件xmlcsv文件单元测试概念顾名思义,只测试当前单元的程序或者代码,也可以理解当前模块的代码块,单元测试假设所有的内部或外部的依赖应该是稳定的, 已经在别处进行测试过的.使用mock 就可以对外部依赖组件实现进行模拟并且替换掉, 从而使得单元测试将焦点只放在当前的单元功能。UnittestPython中有一个自带的单元测试框架是uni
2021-10-08 21:09:59
126
原创 python类的继承,私有属性
继承**在程序中,继承描述的是多个类之间的所属关系,如果一个类A里面的属性和方法可以复用,则可以通过继承的方式,传递到类B里,那么类A就是基类,也叫做父类;类B就是派生类,也叫做子类。**单继承也就是一个类只继承一个父类class A(): def __init__(self): self.name = 'Tom' def print_name(self): passclass C(A,B): passb = C()print(b.na
2021-10-07 11:42:30
328
原创 pytho面向对象和类
python面向对象和类面向对象三大特性: 封装,继承,多态封装Inheritance 继承(代码重用)Polymorphism 多态(接口重用)类中的魔法方法魔法方法的执行顺序面向对象三大特性: 封装,继承,多态封装1 在类中对数据的赋值、内部调用对外部用户是透明的2 这使类变成了一个胶囊或容器,里面包含着类的数据和方法3 作用: 1)防止数据被随意修改 2)使外部程序不需要关注对象内部的构造,只需要通过对外提供的接口进行直接访问Inheritance 继承(代码重用)1.一个
2021-10-06 17:03:39
66
原创 练习题 2021-10-05
三、简答题1、使用格式化输出编写代码完成一下代码的显示,如图?Print(‘姓名:{}’.format(name))Print(‘QQ:{}’.format(qq))Print(‘手机号:{}’.format(phone))Print(‘地址:{}’.format(‘北京吉利大学’))2、获取输入的值,判断如果身高没有超过150cm,则进动物园不用买票,否则需要买票?High = 150If high > 150:Print(‘您的孩子需要买票’)Else:Print(‘请...
2021-10-05 15:11:34
83
原创 练习题1 2021-10-04
三、简答题1、变量的类型有哪些?可变List dict set不可变String float tuple2、age=10 ,格式化输出一下我今年10岁?3、myname = “baobaodebaobao”取myname字符串的倒数第二个元素,并输出?Print(myname[-2:len(myname)-1])4、append和extend的区别?将元素逐条添加到列表中末尾追加将添加到元素作为整体5、创建一个列表list,向列表list中添加一个字符串“XuanGe”?List.
2021-10-05 15:02:26
386
原创 sql多表联查练习题
1.查询名人表性别为男的作者select *from celebrity cwhere c.ssex= '男'2.查询静夜思的作者select c.snamefrom celebrity cinner join summary s on c.sid=s.sid inner join works w on w.wid = s.widwhere 1=1and w.wwork = '静夜思'3.查询李白和杜甫的年纪select c.sname,c.sagefrom c.
2021-10-01 15:30:00
746
原创 python 异常捕获
异常捕获当我们写完程序后,为了不影响程序运行,我们们可以使用异常捕获来确定异常的来源try; # 捕获异常 passexcept: # 处理异常 passelse: # 没有异常 passtry-finally 语句
2021-09-28 15:54:47
115
原创 python文件操作
文件操作打开和关闭 open() or with open()f = open('文件', 'w')或者f = open('文件', 'r')f.clone() # 关闭文件with open('文件','r',encoding='') as f: f.read()# 区别:with更加简洁,不用手动关闭文件打开的文件的方式r 以只读的方式打开文件,这是默认的打开方式w 以只写的方式打开文件,没有文件择创建文件,并添加内容,有文件在覆盖文件之前的能容a 以追加的方式打开文件,没有文件
2021-09-27 13:57:30
94
原创 Python 函数
定义函数def default_01(a,*args, **kwargs): pass参数的顺序def func(位置参数,*args,缺省参数,**kwargs): passfun(参数值)位置参数形参:小括号中的参数,用来接收参数用的实参:调用时小括号中的参数,用来传递给函数用的不定长参数*agrs:不确定多少个参数是用它,数据类型是tuple**kwargs:不确定多少个以key=value的参数使用,数据类型是dict,key不可以重复函数返回值def T
2021-09-26 17:29:16
67
原创 python元祖和字典的操作
元祖是不可变变量元祖和列表区别元祖可以作为字典的key而存在列表和元组的区别是显然的: 列表是动态的,其大小可以该标 (重新分配); 而元组是不可变的,一旦创建就不能修改。list和tuple在c实现上是很相似的,对于元素数量大的时候, 都是一个数组指针,指针指向相应的对象,找不到tuple比list快的理由。 但对于小对象来说,tuple会有一个对象池,所以小的、重复的使用tuple还有益处的。为什么要有tuple,还有很多的合理性。 实际情况中的确也有不少大小固定的列表结构,例如二维地理坐标等
2021-09-24 16:05:45
331
原创 Python集合常用方法
集合是什么python中,用set来表示一个无序不重复元素的序列。set的只要作用就是用来给数据去重。可以使用大括号 { } 或者 set() 函数创建集合,但是注意如果创建一个空集合必须用 set() 而不是 { },因为{}是用来表示空字典类型的交集 使用 & 或 intersectionset01 = {'张三', '李四', '王五', '赵六'}set02 = {'张三', '赵六', '孙七', '钱八'}print(set01 & set02) # {'张三',
2021-09-24 11:52:51
399
原创 Python列表常用方法
新增元素append() 在列表末未追加list01 = ['张三', '李四', {'name': '王五', 'age': '27'}]list01.append('赵六')print(list01) # ['张三', '李四', {'name': '王五', 'age': '27'}, '赵六']extend() 逐条将元素追加到列表中list01 = ['张三', '李四', {'name': '王五', 'age': '27'}]list01.extend({'1hh','为了部落
2021-09-23 19:13:08
156
原创 Python 字符串常用操作
字符串切片需要要到下标,下标从零开始String[起始步骤:结尾(不包含结束未本身):步长]string = 'hellow csdn 'string[1:]反转字符串string[::-1]string[::-1]查找字符串下标 find() index()string = 'hellow csdn'# find()string.find('h')# rfind()string.rfind('h')# index()string.index('h')find(‘字符串’
2021-09-23 11:48:39
174
原创 Python 99乘法表、小青蛙跳台阶及其他思维题(5L和3L的杯子取4L)
99乘法表# while i = 1while i < 10: j = 1 while j <= i: print(f'{j}*{i}={i * j}', end=' ') j += 1 i += 1 print('\n')# forfor i in range(10): for j in range(1, i+1): print(f'{j}*{i}={i*j}', end=' ') pr
2021-09-22 17:32:55
492
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人