09 2019 档案
摘要:Mac OS+Android真机 8.0在使用uiautomatorviewer获取界面时报Error obtaining UI hierarchy Reason: Error while obtaining UI hierarchy XML file: com.android.ddmlib.Syn
阅读全文
摘要:[TOC] greenlet示例 greenlet微线程,允许在线程中手动切换 示例1,线程切换 gr1和gr2是两个greenlet线程,使用gr1.switch(..)启动gr1,gr1执行test1,切换到gr2,gr2执行test2打印helloworld,然后切换回gr1,z获取到返回值4
阅读全文
摘要:前言 requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快。但是requests发送请求是串行的,即阻塞的。发送完一条请求才能发送另一条请求。 为了提升测试效率,一般我们需要并行发送请求。这里可以使用多线程,或者协程,gevent或者aiohttp,然而使用起
阅读全文
摘要:[toc] Appium在操作混合App或Android App的H5页面时, 常常需要定位H5页面中的元素, 传统方式是 FQ + 使用Chrome://inspect来定位元素, 环境准备相当繁琐, 不仅需要想办法FQ, 而且还需要Android设备安装Google框架以及手机版Chrome浏览
阅读全文
摘要:Linux常用命令 目录相关命令 切换目录cd命令 cd ..: 返回上级目录 cd -: 返回上次目录 创建目录mkdir命令 mkdir:创建目录 复制cp命令 cp: 复制文件 cp -r 复制文件及目录 删除rm命令 rm: 删除文件 rm -r 删除文件及目录 rm -rf 强制删除文件及
阅读全文
摘要:Python中常用的操作Excel的三方包有xlrd,xlwt和openpyxl等,xlrd支持读取.xls和.xlsx格式的Excel文件,只支持读取,不支持写入。xlwt只支持写入.xls格式的文件,不支持读取。 openpyxl不支持.xls格式,但是支持.xlsx格式的读取写入,并且支持写入
阅读全文
摘要:## 数据及配置文件之争 数据及文件通常有三种类型: 1. 配置文件型:如ini,conf,properties文件,适合存储简单变量和配置项,最多支持两层,不适合存储多层嵌套数据 2. 表格矩阵型:如csv,excel等,适合于存储大量同类数据,不适合存储层级结构的数据 3. 多层嵌套型:如XML
阅读全文
摘要:JSON简介 JSON(JavaScript Object Notation)即JavaScript对象表示法,一种轻量级,通用的 文本 数据格式。 JSON语法支持对象(Object),数组(Array),字符串,数字(int/float)以及true/false和null。 JSON拥有严格的格
阅读全文
摘要:CSV(Comma-Separated Values)即逗号分隔值,一种以逗号分隔按行存储的文本文件,所有的值都表现为字符串类型(注意:数字为字符串类型)。 如果CSV中有中文,应以utf-8编码读写,如果要支持Excel查看,应是要用utf-8 with bom格式及utf-8-sig ## Py
阅读全文
摘要:服务器:Centos7 Python版本:Python 3.7.0 Celery版本:4.2.1 Python3.5以上,OrderDict不允许在迭代过程中进行修改,导致LRUCache.update失败,可能引起的此问题。 解决方法,安装dev版的celery 参考链接: "https://gi
阅读全文
摘要:国产的360安全浏览器,360急速浏览器,QQ浏览器,遨游浏览器甚至新版还未上市的Edge浏览器都是基于Chrome浏览器的开源版本Chronium开发来的。所以360浏览器可以理解为一个定制的Chrome浏览器,最新360安全浏览器是基于Chromium 63版本的,落后正式的Chrome版本。
阅读全文
摘要:在学会了抓包,接口请求(如requests库)和Selenium的一些操作方法后,基本上就可以编写爬虫,爬取绝大多数网站的内容。 在爬虫领域,Selenium永远是最后一道防线。从本质上来说,访问网页实际上就是一个接口请求。请求url后,返回的是网页的源代码。 我们只需要解析html或者通过正则匹配
阅读全文
摘要:在Web自动化中,常常遇到三种弹框: 1. JavaScript警告框,如alert,confirm,prompt等,如下图: 处理方法为driver.switch_to.alert().dismiss()或river.switch_to.alert().accept() Alert弹框 Confi
阅读全文
摘要:在调试Selenium脚本中,有时因为操作太快或操作不明显而不清楚是否定位到了正确的元素。我们可用通过执行js为定位到的元素添加样式,来高亮显示定位到的元素。 在Selenim Webdriver中,可以通过driver.exectue_scirpt() 执行JavaScript代码,执行的Java
阅读全文
摘要:Selenium默认的截图save_screenshot只支持对当前窗口内容进行截图,当如果你想要截取整个网页,那么,可以明确的告诉你。 Selenium做不到。 你可以手工使用开发者工具Ctrl+Shift+P调出命令行菜单,执行Capture full screenshot命令进行截图,如下图图
阅读全文
摘要:Chrome自带的开发者工具DevTools功能非常强大。有时候我们在使用Selenium操作浏览器时需要通过调用一下DevTools的方法来完成一些设置,如模拟移动设备,弱网模拟等等。 Selenium的WebDriver类中有一个 方法可以用来执行Chrome开发这个工具命令。 cdp即Chro
阅读全文
摘要:在使用selenium测试后台时常常每个流程都需要走登录流程,这样自然比较浪费时间。如果遇到登录需要输入验证码等情况,就可能出师未捷身先死。 在Web应用中,登录状态通常是通过Cookie中对应的session id验证的。也是就是说,我们只要携带上登录后的Cookies,浏览器就会自动识别我们为登
阅读全文
摘要:返回: Pytest权威教程 编写钩子函数(Hooks) 钩子函数验证和执行 Pytest会调用任意给定规格并注册了的插件的钩子方法。让我们看一下一个函数的典型钩子函数 pytest_collection_modifyitems(session,config,items),Pytest在收集完所有测
阅读全文
摘要:目录插件编写Pytest启动时的插件发现顺序conftest.py:本地目录插件编写自己的插件使你的插件可以被他人安装断言重写在测试模块或conftest文件中要求/加载插件按名称访问另一个插件注册为通用标记测试插件 返回: Pytest权威教程 插件编写 很容易为你自己的项目实现[本地confte
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 安装和使用插件 本节讨论如何安装和使用第三方插件。有关编写自己的插件的信息,请参阅编写插件。 安装第三方插件可以通过以下方式轻松完成 : 如果安装了插件,则 自动查找并集成它,无需激活它。 这是一些常用插件列表: pytest django:为djang
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 经典xUnit风格的setup/teardown 本节介绍了如何在每个模块/类/函数的基础上实现Fixture(setup和teardown测试状态)的经典而流行的方法。 注意 虽然这些setup/teardown方法对于来自a 或nose的人来说简单且
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 运行Nose用例 基本支持运行Nose框架格式的测试用例。 使用方法 后安装pytest类型: 你应该能够运行你的nose样式测试并利用pytest的函数。 支持的nose风格 在模块/类/方法级别进行设置和拆卸 SkipTest异常和标记 设置/拆卸装
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 缓存:使用跨执行状态 版本2.8中的新函数。 使用方法 该插件提供了两个命令行选项,用于重新运行上次 调用的失败: ,` last failed` 只重新运行故障。 ,` failed first` 先运行故障然后再运行其余的测试。 对于清理(通常不需要
阅读全文
摘要:[TOC] "返回: Pytest权威教程" Fixture方法及测试用例的参数化 Pytest在多个级别启用测试参数化: 允许一个[参数化Fixture方法。 @pytest.mark.parametrize允许在测试函数或类中定义多组参数和Fixture。 pytest_generate_tes
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 跳过(Skip)及预期失败(xFail): 处理不能成功的测试用例 你可以标记无法在某些平台上运行的测试用例或你希望失败的测试用例,以便Pytest可以相应地处理它们并提供测试会话的摘要,同时保持测试套件为通过状态。 跳过(Skip)指,你希望如果某些条
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 模块及测试文件中集成doctest测试 编码 使用doctest选项 默认情况下,Pytest按照python 模块标准 模式进行匹配。你也可以通过使用以下命令更改匹配模式: 在命令行上。从版本开始 ,` doctest glob`可以在命令行中多次使用
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 捕获警告信息 3.1版中的新函数。 从版本开始 ,pytest现在会在测试执行期间自动捕获警告并在会话结束时显示它们: 运行pytest现在产生这个输出: 可以传递该标志以控制将显示哪些警告,甚至将其转换为错误: 可以 使用 ini选项在文件中设置相同的
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 捕获标准输出及标准错误输出 默认 stdout/stderr/stdin 捕获行为 在测试执行期间,程序中的标准输出/标准错误输出都会被捕获到。 如果测试或setup方法执行失败时,会在报错追溯信息中查看到程序中的标准输出及标准错误输出。(可以通过 命令
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 使用tmp目录和文件 tmp_path Fixture方法 3.9版本新函数 你可以使用 在临时目录根目录中创建一个独立的临时目录以供测试调用。 是一个 对象。以下是测试使用方法的示例如: 运行这个,我们可以看到,除了 这一行,其他断言都正常测试通过:
阅读全文
摘要:[TOC] "返回: Pytest权威教程" "返回: Pytest权威教程" Monkeypatching,对模块和环境进行Mock 有时,测试需要调用依赖于全局设置的函数,或调用无法轻松测试的代码(如网络访问)。 monkeypatch fixture可帮助你安全地设置/删除属性,字典项或环境变
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 使用Marks标记测试用例 通过使用 你可以轻松地在测试用例上设置元数据。例如, 一些常用的内置标记: skip 始终跳过该测试用例 skipif 遇到特定情况跳过该测试用例 xfail 遇到特定情况,产生一个“期望失败”输出 parametrize 在
阅读全文
摘要:返回: Pytest权威教程 Fixture函数:清晰 模块化 易扩展 2.0/2.3/2.4版本新函数 text Fixture函数的目的是为测试的重复执行提供一个可靠的固定基线。Fixture函数比经典的xUnit setUp/tearDown方法有着显着的改进: Fixture函数具有明确的名
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 断言的编写和报告 使用assert语句进行断言 pytest允许你使用标准的Python 断言语句来验证测试中的期望结果和实际结果。 例如,你可以编写以下内容: 来断言你的函数返回一个特定的值。 如果此断言失败,你将看到函数调用的返回值: 支持显示常见的
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 原有TestSuite的执行方法 Pytest可以与大多数现有的测试套件(testsuite)一起使用,但是它的加载方式方式不像nose或Python的默认单元测试框架的测试运行器(test runner)。 在使用本节之前,你需要安装pytest。 使
阅读全文
摘要:[TOC] "返回: Pytest权威教程" Pytest 使用及调用方法 使用python m pytest调用pytest 2.0版本新增 你可以在命令行中通过Python编译器来调用Pytest执行测试: 通过 调用会将当前目录也添加到 中,除此之外,这几乎等同于命令行直接调用 。 可能出现的
阅读全文
摘要:[TOC] "返回: Pytest权威教程" 安装及入门 Python支持版本 : Python 2.6,2.7,3.3,3.4,3.5,Jython,PyPy 2.3 支持的平台 : Unix/Posix and Windows PyPI包名 : pytest 依赖项 : py,colorama
阅读全文
摘要:如有任何学习问题,可以添加作者微信:superz-han unittest, pytest, nose, robot framework对比 什么是框架? 框架(Framework)是整个或部分系统的可重用设计, 框架是用来解决代码的组织及运行控制问题的。 在我们编写自动化脚本的时候,经常需要读取配
阅读全文
摘要:如有任何学习问题,可以添加作者微信:superz-han HTTP,GET请求,无参 GET http://httpbin.org/get Python3 http.client import http.client # 1. 建立HTTP连接 conn = http.client.HTTPConn
阅读全文
摘要:更多学习资料请加QQ群: 822601020获取 实现效果 需求场景: 1. 公司微服务接口使用数字签名的方式, 使用Postman调试接口每次都需要修改源码将验签临时关闭, 但是关闭后,其他微服务不能正常调用该服务 2. 从ELK中抓取到的接口参数, 需要Json格式化, 我通常使用Sublime
阅读全文
摘要:[TOC] 一、Python基础 Python简介、环境搭建及包管理 Python简介 1. 特点:Python是一门动态、解释型、强类型语言 1. 动态:在运行期间才做数据检查(不用提前声明变量) 静态语音(C/Java):编译时检查数据类型(编码时需要声明变量类型) 2. 解释型:在执行程序时,
阅读全文
摘要:HTTP, HTTPS协议 什么是DNS HTTP协议 怎么抓取HTTPS协议 说出请求接口中常见的返回状态码 http协议请求方式 HTTP和HTTPS协议区别 HTTP和HTTPS实现机有什么不同 POST和GET的区别 HTTP请求报文与响应报文格式 什么是Http协议无状态协议?怎么解决HT
阅读全文
摘要:框架的最终归宿往往是领域语言+模板解析。 首先先约定一种所要执行操作的表述格式。然后通过模板解析将描述语言转化为代码进行执行。例如,我们可以使用以下yaml文件描述多个步骤并且需要关联的接口: : 其中, 为该接口或步骤的名称描述, 段是接口的信息,对应 的每一个参数, 和`method param
阅读全文
摘要:1. 列表统计 使用count获取单个字符出现次数 使用Counter的most_commom获取 出现次数最多的前几位 2. 字典键值的集合操作 字典的keys()支持 并集 交集 差集 等集合操作 当字典的values都是字符串(无嵌套)时,字典的items()也支持集合操作 断言字典a包含字典
阅读全文
摘要:Python自带的json库可以把请求转为字典格式, 但在多层嵌套的字典中取值往往要进行多次循环遍历才能取到相应的数据, 如: 1. 获取所有用户名? 2. 如果users是动态的(有可能是users123,或users567)怎么获取下面的数据? 3. 怎么快说获取年龄大于20的用户? 这种类型的
阅读全文
摘要:当业务处理比较耗时时, 接口一般会采用异步处理的方式, 这种异步处理的方式又叫Future模式. 一般流程 当你请求一个异步接口,接口会立刻返回你一个结果告诉你已经开始处理,结果中一般会包含一个任务id类似的东西用于追踪结果, 另外会提供一个 查询结果 的接口, 当结果未处理完查询接口会返回相应的"
阅读全文
摘要:接口测试框架怎么搭建的? 你有没有做过框架稳定性优化相关的工作? 你们Mock是怎么做的? 异步接口怎么测试? 接口依赖怎么处理? 怎么做参数化? 持续继承怎么做的? Http协议 https测试点 购物车模块接口测试点分析 很多接口都需要登录怎么处理? 有没有用过getSession() resp
阅读全文
摘要:Pycharm下载 下载链接: "https://www.jetbrains.com/pycharm/download/" 分为专业版和社区版,社区版也能满足学习需求 Pycharm专业版激活 1. 使用前请将“0.0.0.0 account.jetbrains.com”添加到hosts文件中 2.
阅读全文
摘要:相比于curl命令,Httpie提供更清晰友好的界面,并支持授权,代理等操作 主要特性 直观的语法 格式化和色彩化的终端输出 内置 JSON 支持 支持上传表单和文件 HTTPS、代理和认证 任意请求数据 自定义头部 持久性会话 类 Wget 下载 支持 Python 2.6, 2.7 和 3.x
阅读全文
摘要:curl命令使用 curl命令 curl命令是服务器端调试接口最常用的命令,没有之一 1. curl测试GET接口 url参数可以直接写到url中,此时url最好用引号引起来 2. 表单类Post请求 curl可以通过 指定 请求数据(包含 参数时,默认为Post请求),如 3. JSON格式Pos
阅读全文
摘要:需求 经常我们在定义数据模板是需要预先埋设一些变量占位符, 如$name或{{name}}或%(name)s, 来便于做参数化替换. 这便需要使用字符串格式化,或者模板引擎(如Jinja2)来将你准备好的一批数据替换到模板指定的位置中去. Python自带的字符串格式化方式一般有3种: 1. 使用%
阅读全文
摘要:目录 Selenium自动化测试基础 Selenium自动化测试第一天(上) Selenium自动化测试第一天(下) Selenium自动化测试第二天(上) Selenium自动化测试第二天(下) 更多学习资料请加添加作者微信:superz-han获取 什么是自动化测试? 自动化测试是把大量需要人工
阅读全文
摘要:需求 在Python Selenium 的 PageObject模式中,一般每个页面需要写一个类, 一种PageObject的写法如下: 对于一个成型的UI项目来说, 在编写用例前, 动辄要先编写数十上百个这种PageObject类. 鉴于每个PageObject类的格式相似, 可以采用 Page
阅读全文
摘要:一个学生在操作页面跳转时遇到一个Selenium报错, 如下图所示: 出错原因为: Selenium只能操作当前打开页面中的可见元素,当页面跳转, 前进, 后退, 或刷新后, 之前定位到的元素要重新定位才能使用. 可以尝试运行以下脚本, 查看报错信息:
阅读全文
摘要:在HTML中, 节点有三种常见属性, 分别是id, name和class, 其中class是一个特殊的属性, 支持多个类名, 以空格隔开, 如下图所示: 你是否注意到, 为什么selenium中的find_element_by_class_name, 是by_class_name而不是, by_cl
阅读全文
摘要:pycharm中导入selenium报错 现象: pycharm中输入 , 标红 原因1: pycharm使用的虚拟环境中没有安装selenium, 解决方法: 在pycharm中通过设置或terminal面板重新安装selenium 原因2: 当前项目下有 ,和系统包名冲突导致, 解决方法,重命名
阅读全文
摘要:Script(JS)为Postman赋予无限可能 基于Postman 6.1.4 Mac Native版 演示结合 "user_api_demo" 实现 PS 最近接到任务, 要把几种基本下单接口调试和持续集成一下, 做个常规功能验证, 研究了下发现, 不同的下单途径, 有的需要登录(Session
阅读全文
摘要:作为一款接口调试利器, Postman的更新迭代速度很快, 不断加入了很多新的功能.使的api设计,测试,监控, Mock,以及团队协作更加方便. 修改执行顺序 在遇到有接口依赖的情况, 我们往往需要接口按顺序执行, 之前可以通过在一个请求的Pre request Scripts中使用pm.send
阅读全文
摘要:基础 Python中lambda是什么意思 Python中的pass是什么意思 作为解释型语言,Python如何运行 什么是Python的单元测试 在Python中unittest是什么 如何将数字转换为字符串 什么是Python中的模块和包 解释如何在Python中生成随机数字 在Python中如
阅读全文
摘要:## 装饰器的应用场景 - 附加功能 - 数据的清理或添加: - 函数参数类型验证 @require_ints 类似请求前拦截 - 数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改 - 为函数提供额外的数据 mock.patch - 函数注册 - 在任务中心注册一个任务 - 注册
阅读全文
摘要:括号匹配是栈应用的一个经典问题, 题目 判断一个文本中的括号是否闭合, 如: text = "({[({{abc}})][{1}]})2([]){({[]})}[]", 判断所有括号是否闭合 思路 1. 使用栈后进先出的原则, 当字符是 之一时, 入栈 2. 当字符是 之一时, 判断栈顶与当前字符是
阅读全文
摘要:题目: 给出一个字符串, 判断其是否是是合法的IP(IPv4)地址 思路 1. 将字符串按"."分割成4段得到一个列表 2. 逐个判断列表中的字符串是否数字格式并且在0~255之间, 是在新列表对应位置保存True, 不是保存False 3. 判断新列表中是否有False 实现代码 !/usr/bi
阅读全文
摘要:目录 "Appium环境搭建" "Mac iOS环境搭建" "Appium基础" "Appium进阶" Monkey的使用 参数: p v s throttle ignore crashes: 忽略崩溃 ignore timeouts: 忽略ANR ignore security exception
阅读全文
摘要:目录 "Appium环境搭建" "Mac iOS环境搭建" "Appium基础" "Appium进阶" Appium简介 Appium是一款开源的Appium自动化工具, 基于Webdriver协议, 主要有以下3个特点: 1. 全能: 支持iOS/Andorid/H5/混合App/WinApp 2
阅读全文
摘要:目录 "Appium环境搭建" "Mac iOS环境搭建" "Appium基础" "Appium进阶" 环境搭建 1. 安装brew 2. 安装java 3. 安装python3 及相关包 4. 安装git, nodejs 5. 配置cnpm 6. 安装appium 7. 安装appium doct
阅读全文
摘要:目录 "Appium环境搭建" "Mac iOS环境搭建" "Appium基础" "Appium进阶" 课程使用Windows+Android虚拟机, 建议使用Windows系统学习课程, 如使用Mac系统, 请另外准备一台Andorid手机 Windows系统Appium环境搭建 1. 安装JDK
阅读全文
摘要:在使用unittest框架时,我们常常需要下载一个 用来生成HTML格式的报告,那么我们能不能自己实现一个呢? HTMLRunner是模仿unittest自带的TextTestRunner()实现的,我们先来看看TextTestRunner()的运行流程。 TextTestRunner使用方法 运行
阅读全文
摘要:在用例组织上,unittest的Test Suite的拥有非常好的灵活性,然而Test Suite一般要提前编制好,添加和组织用例必须使用代码,不方便使用。 本文使用 Flask + unittest.TestSuite + pickle搭建一个简单的unittest用例挑选和执行平台。 思路: 添
阅读全文
摘要:参考: "https://www.cnblogs.com/yoyo008/p/9232805.html" 在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 在Django Admin中每个模型的Admin类(继承至admin.ModelAdmin), 我们可以通过
阅读全文
摘要:参考: "https://books.agiliq.com/projects/django admin cookbook/en/latest/export.html" 在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 在Django Admin中每个模型的Admi
阅读全文
摘要:## 目录 - [Django从Models 10分钟建立一套RestfulApi](https://www.cnblogs.com/superhin/p/11454749.html) - [Django从Models 10分钟定制一个Admin后台](https://www.cnblogs.com
阅读全文
摘要:目录 Django从Models 10分钟建立一套RestfulApi Django从Models 10分钟定制一个Admin后台 简介 Django是一套完善而强大的web开发框架, 结合Django Restframework我们可以非常快的搭建一套后台的api, 该api主要特点: 标准的Re
阅读全文
摘要:Numpy学习笔记 ndarray多维数组 创建 数组创建函数 arange ones/ones_like zeros/zeros_like empty/empty_like eye/identity 属性 ndim: 轴的个数 shape: 数组的维度 size: 元素总个数 dtype: 数据类
阅读全文
摘要:[TOC] 运行环境: pip insall pytest pytest bdd pytest selenium BDD介绍 BDD行为驱动是一种敏捷开发模式, 重点在于消除开发/测试对需求了解的歧义及用户场景的验证. 需求描述/用户场景 BDD提供一套标准的需求及用户场景表达语法, 一般为Feat
阅读全文
摘要:今天同事向我推荐Django 2 By Example这本书,我笑着说,这本书的中文翻版我早已看完并实践了上面的每一个项目,并且我是从Django By Example第一版的中文译文便开始学习的。 然后我向他推荐了柚子小站的中文译版。同事和我看了柚子小站博主的1年半的全栈历程,从计算机原理到Lin
阅读全文