07 2018 档案
摘要:运行测试用例时发现以下报错 真是醉了:def __init__函数写错了, 改过来就好了
阅读全文
摘要:1. GET和POST有哪些区别? 1). get参数通过url传递,post则放在请求体中; 2). get请求在url中传递的参数有长度限制,因此数据传输量较小(最大为2kb左右),post传输的数据量相对较大 3). get相对post来说,不太安全,因为参数直接暴露在url中,所以不能用来传
阅读全文
摘要:def A(a, b): try: for i in range(1, int(b)): a += b if int(b) > 4: return a else: a += a return a except TypeError: return '参数类型错误' except ValueError:
阅读全文
摘要:一. 了解需求,什么是系统的核心业务 二. 编写测试用例:用例名称,前置条件,测试数据,测试步骤,期望结果 三. 自动化代码的初步构建:所有的元素定位、元素操作、测试用例都写在一个模块中 问题: 1. 层次混乱,一旦页面元素调整,需要挨个寻找对应的测试模块,测试类,测试用例函数,不便于后期维护 2.
阅读全文
摘要:在Python Console中运行pytest发现报错了 这是为什么?因为Python Console已经是进入python之后的环境,就像在python自带的IDLE中运行pytest pytest的运行是不需要进入python环境的,因此可以在Terminal命令行中运行pytest,结果是o
阅读全文
摘要:一. 测试模块内部使用fixture和测试模块调用外部公共的fixture 1. unittest框架下的测试用例模块 2. 测试用例模块内部使用fixture fixture:即测试用例执行的环境准备和清理,在unittest中即指setup()、teardown() 3. 测试用例模块调用外部公
阅读全文
摘要:第一步:进入File—Settings—Python Integrated Tools 发现设置中Default test runner是Unittests 将其改为py.test,点击OK保存 如果此时,鼠标右击还是没有Run py.test出现,则选择第二步 第二步:在当前要运行的脚本的右上角点
阅读全文
摘要:Pycharm中新建一个工程,如果不经过配置,在该工程下创建模块写代码,通常是有波浪线的,这样看着很不美观 如何解决这种问题,通常有两种方法 方法一:点击右下角的图标,会出现一个Highlighting Level,默认是Inspections,设置为None 但这种方法有个缺点,就是只针对当前的p
阅读全文
摘要:一. driver常用方法 二. 常用定位 三. 元素在页面不可见区域 四. iframe的操作 五. 页面弹出框:加等待时间 六. windows弹出框 七. 鼠标操作 八. 下拉列表 注意:下图中Select类引入不对 应该为 from selenium.webdriver.support.se
阅读全文
摘要:在接口测试中,excel中存储的是测试数据,包括测试id,api_name,测试说明,请求数据,期望结果等等,所以对待excel要格外注意,刚刚就因为excel中请求数据少了一个",导致测试通通失败 下图即为测试用例的运行结果,几乎都fail了,从图中可以看出问题出在print(json.loads
阅读全文
摘要:1. 页面封装——理性判断 2. basepage——定位表达式的判断——要加上移动端的,加上上下左右滑动封装、toast可以封装、webview切换操作 3. 页面当中,所有元素定位——更换——移动端的定位表达式 4. 页面当中,函数名字不需要改——函数的实现修改为移动端的用法 修改和新增功能;
阅读全文
摘要:在玩tesseract时,发现如下报错: 这个是因为Tesseract-OCR的版本和chi_sim.traindata字库版本不匹配,由于我的Tesseract-OCR是3.02.02,去google下载字库要FQ,CSDN要积分,在百度快要无望的情况下,发现了该网站http://www.xue5
阅读全文
摘要:一. 除零错误(ZeroDivisionError) 今天在jenkins上运行接口自动化测试任务时,从控制台输出中看到了除零错误,大概是这样的 从上图中,通过分析,可以得出三个结论: 1. jenkins通过命令行执行任务时,其所在的位置是在jenkins中当前任务的工作空间下 2. 那么main
阅读全文
摘要:一. 获取webview的html页面 方法一: 1. 获取webview中对应的html页面 谷歌浏览器中输入地址:chrome://inspect(第一次使用要FQ) 前提:手机开启USB调试模式,并且用命令adb devices能够识别设备,app要打开webview页面 2. appium的
阅读全文
摘要:在用appium-desktop-setup-1.6.2进行app手势密码设置时,发现move_to(x, y)相对偏移量的方法用不了,绘制的手势也是乱跑 还会抛一个错误 selenium.common.exceptions.InvalidCoordinatesException: Message:
阅读全文
摘要:一. 层级定位和list 先通过find_element_by_XXX找到父级元素webelement,再通过webelement.find_element_by_XXX寻找子元素 二. 滑动屏幕 滑动接口: swipe(起始X,起始Y,结束X,结束Y) 结束X - 起始X:X轴滑动的距离 结束Y
阅读全文
摘要:一. 获取应用包名和入口activity 获取应用包名和入口activity:aapt命令 aapt目录: 安卓sdk的build-tools目录下(如果要在cmd里直接运行,要配置环境变量,否则需要在aapt所在目录下打开cmd) 示例: adt-bundle-windows-x86_64-201
阅读全文
摘要:一. 源码的说明 在源码中,ddt的file_data函数下有这样一段话 意思是说,如果json文件的内容是字典,字典的键名将会作为测试用例名的后缀,字典的值将会作为测试数据,如果这样的话,如果键名字母排序靠前的是不是先执行,字母排序靠后的是不是后执行? 二. 验证猜想 我们来验证一下,先新建一个m
阅读全文
摘要:一. 定义公共的请求方法 如下图所示,同一个模块,只是请求数据和返回数据不同,http请求的发送过程是完全相同的 对于不同模块,只是请求的url、请求方法、请求数据和返回数据不同,http请求的过程也是完全相同的 这样就可以将发送请求的方法写成一个类或函数,供不同的测试用例调用 具体的实现是 二.
阅读全文
摘要:晚上写了一个请求类,传了一个动态参数进去,实例化测试的时候,发现请求数据根本没法读到,先附上代码 期望的数据是注册成功,但是怎么试都是手机号为空 为什么?问题就出在if判断之后,如果请求方式是get,就让params=kwargs,如果请求方式是post,data=kwargs,但是实例化的时候就出
阅读全文
摘要:一. 为请求添加cookies 在上一篇文章中,可以看出,如果不给request请求加上cookie,当我们获取登录后的页面的考勤信息时,会自动跳转到登录页面。由于http是无状态协议,cookie的作用就是跟踪会话 注意cookies也要按照**kwargs传参的方式,即以key=value的形式
阅读全文
摘要:一. 接口和接口测试 1. 接口是啥? 传递数据的通道 接口测试:是测试系统组件间接口的一种测试 接口测试主要包括:同一个系统中模块与模块间的接口,另一个是跨系统平台与平台间的对接(内部接口、外部接口) 接口类型: • HTTP接口:通过GET或POST来获取数据,在数据处理上效率比较高 • Web
阅读全文
摘要:一. appium的引入 二. adb adb(Android Debug Brige)是用来连接安卓手机和PC端的调试桥梁,通过adb服务,在PC端命令行界面对手机或者模拟器进行全面的操作 安装: adb是一个可执行文件,在SDK文件目录platform-tools下 adb的操作是通过cmd命令
阅读全文
摘要:一. adb devices发现不了设备 刚试了一下,在夜神模拟器开启的情况下,adb devices 死活找不到设备 adb kill-server和adb start-server也无济于事 二. 两个不同的adb版本差异 这时候跑到夜神的安装目录D:\Program\nox\Nox\bin下,
阅读全文
摘要:一. Master/Slave模式 分担jenkins服务器的压力,任务分配到其它执行机来执行 Master:Jenkins服务器 Slave:执行机(奴隶机)。执行Master分配的任务,并返回任务的进度和结果 二. 在Master(阿里云)上配置Slave(本地windows) 一. 新建节点
阅读全文
摘要:一. 定义 set是一个无序且不重复的元素集合 set和dict类似,是一组key的集合,但不存储value set有以下特性: 1. 由于key不能重复,所有set中没有重复的key 2. 元素为不可变对象(不能将可变类型字典或者列表作为元素) 二. 创建set 1. 直接使用{}创建新的set并
阅读全文
摘要:一. 什么是配置文件?为什么要做配置文件? 将所有的代码和配置都变成模块化可配置化,这样就提高了代码的重用性,不再每次都去修改代码内部,这个就是我们逐步要做的事情,可配置化 二. python中的ConfigParser类 模块:from configparser import ConfigPars
阅读全文
摘要:一. 数据库在自动化测试中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到,测试的时候就从数据库中读取出来。这点是非常重要的! 存测试结果 二. python中的数据库之必备前提条件 1. 安装:pyMysql python2中使用mysqldb,python3中
阅读全文
摘要:一. 安装python3.4 二. 安装pycharm 三. 安装可视化界面和远程桌面连接 四. 启动和配置pycharm 五. 安装更多字体 六. 给pycharm设置桌面快捷方式 一. 安装python3.4 阿里云Centos 6.8上自带的python版本是2.6,我们要安装python3.
阅读全文
摘要:一. 前提条件:已安装jdk和tomcat 如何安装,请参考《如何在阿里云上部署war包到tomcat服务器》 二. 下载war包 下载地址:http://mirrors.jenkins-ci.org/war/latest/jenkins.war 三. 利用xftp把jenkins.war放在tom
阅读全文
摘要:一. 安装jdk 确保安装jenkins前jdk已经安装,如何安装见《如何在阿里云上部署war包到tomcat服务器》 二. 安装jenkins 使用以下命令安装jenkins: wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.
阅读全文
摘要:一. unittest最核心的四个概念 unittest中最核心的四个概念是:test case,test suite,test runner,test fixture TestCase:一个testcase的实例就是一个测试用例:测试前准备环境的搭建(setUp),执行测试代码(run),以及测试
阅读全文
摘要:新版的pycharm默认新建的工程Virtualenv(虚拟的环境),在创建环境时一定要注意勾选 Inherit global site-packages: 导入本地包 Make available to all projects : 使所有项目都可用 Inherit global site-pac
阅读全文
摘要:相同点 1. 两者都是返回绝对路径,如果参数path为空,则返回当前文件所在目录的绝对路径 当前py文件所在的目录是revise 2. 如果给一个不存在的文件名作为相对路径的path,会将当前所在目录和文件名拼接起来,返回拼接后的绝对路径 当前目录下并无"apple.txt",这个文件是不存在的。
阅读全文
摘要:一. 原理 将页面的元素定位和元素行为封装成一个page类,实现页面对象和测试用例分离 类的属性:元素定位 类的行为:元素的操作 测试用例:调用所需页面对象中的行为,组成测试用例 二. 好处 1. 当某个页面的元素发生变化,只需要修改该页面对象中的代码即可,测试用例不需要修改 2. 提高代码重用率,
阅读全文
摘要:题目 编写一个程序:1、能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件;2、并打印出相对路径。 思路 1. 这道题目是要用到递归的,递归中return的陷阱,请参考上篇博文《python递归中的return"陷阱"》 2. 涉及到正则的部分考虑用re.serach方法 3. 可
阅读全文
摘要:在做一道练习题(参照下篇博文《在当前目录下递归的查找包含指定字符串的文件》)的时候,发现函数中的return的值竟然是None,百思不得其解,尝试化繁为简,用以下的简单的代码验证了一下 问题版本代码:为什么return i 返回的是 i , 而print(i)得到的是 0 如果把递归过程画成流程图,
阅读全文
摘要:这是五一期间,参照知乎上一篇的文章《十行代码--用python写一个USB病毒》写成的,最初只是单纯的想写成死循环,直到文件占满硬盘为止,第一个遇到的问题是,拷贝到硬盘之后,由于要无限次拷贝,所以每次的文件夹的名字不能重复,对于这个问题,开始是采用追加的方式,比如第一个文件夹叫udisk_bakcu
阅读全文
摘要:一般输入框有以下几种形式 第一种:短的input框 如百度首页的输入框,<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">,百度输入框的值不在text中,是在value属性中 又
阅读全文
摘要:一. webdriver中常用的cookie方法 webdriver中提供了操作cookie的相关方法: get_cookies() 获得cookie信息 add_cookie(cookie_dict) 添加cookie delete_cookie(name) 删除特定(部分)的cookie del
阅读全文
摘要:一. 如何绕过页面登录 我们在登录网站的时候,通常需要输入用户名、密码和验证码,那么有没有办法绕过登录环节呢? 有两种方法可以解决这个问题,一种是利用chrome浏览器的用户配置,一种是利用cookie,这篇文章主要总结一下前者 二. 如何实现加载用户配置(以博客园为例) 第一步:如果之前未登录过该
阅读全文
摘要:在看虫师的selenium--webdriver(python)教程时,发现另一种显性等待的写法,这也是WebDriverWait类源码中给出的例子 我们来看看虫师的例子 一. html源码 在python代码的同级目录下保存一个level_locate.html文件 现在要求鼠标悬浮在Link1下
阅读全文
摘要:一. driver.switch_to.frame(id):可以通过id切换到iframe 之前学习了selenium切换到iframe的方法,代码如下 源码中并没有说可以通过id定位,但事实上是可以的 二. 嵌套iframe的切换 然而,对于嵌套的iframe,又该如何解决: 1. index定位
阅读全文
摘要:语法 作用 返回绝对路径 实例 运行结果
阅读全文
摘要:一. 模块的定义 定义 python模块(Module),是一个python文件,以.py结尾,包含了python对象定义和python语句。模块让你能够有逻辑地组织你的python代码段,把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码
阅读全文
摘要:这几天在学习selenium,顺便用selenium + python写了一个比较简陋的爬虫,现附上源码,有时间再补充补充: 控制台输出 保存到文件
阅读全文