自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小满测试

不求完美,先开始,再完善它

原创 Pytest 参数化(数据驱动)

参数化,就是把测试过程中的数据提取出来,通过参数传递不同的数据来驱动用例运行。其实也就是数据驱动的概念。 在 Unittest 中,我们讲过使用 ddt 库配合 unittest 实现数据驱动。在 Pytest 中并不需要额外的库,通过 pytest.mark.parametrize()即可实现参...

2019-12-24 22:30:18

阅读数 21

评论数 0

原创 Python 列表推导式

列表推导式,也叫列表生成式,是一种方便生成列表的语句。 比如我们要将一个全是整数的列表中每个数取平方后放入新的列表,我们会这么写: li = [3, 6, 9, 11] # 定义一个空列表用来存储结果 news = [] # 将li中的元素挨个运算再添到结果列表 for i in li: ...

2019-12-12 19:16:53

阅读数 1

评论数 0

原创 Python + Selenium PO 设计模式实践

在 Python 领域(Java 中 Selenium 提供了 page factory)中,由于没有官方或者说非常标准的实践模式,再加之 Python 又是一种支持函数式编程的语言,所以对 PO 的实践有很多实现方式。

2019-12-12 19:15:52

阅读数 12

评论数 0

原创 Python + Selenium 使用 unittest 编写自动化测试用例

我们使用之前演示过的 showdoc,编写一个登录的用例,并检查自定义项目是否存在。 首先,我们把这个过程先罗列出来: 打开登录页面 选择登录 输入用户名 输入密码 点击登录 验证自定义项目是否存在 由于这个项目登录后没有任何用户名标识,所以要想判断登录的账号是否正确,可以通过该用户下的项目来...

2019-12-11 22:09:25

阅读数 7

评论数 0

原创 Python + Selenium Page Object页面对象设计模式

前面提到过 UI 自动化测试最大的障碍或者成本最大的地方就在于页面的频繁变化。UI 自动化测试过于依赖于界面,界面变化意味着你的代码无法使用,需要更新维护。 虽然我们可以通过选择更有效的用例来达到降低维护成本的目的,但是毕竟以涉及到 UI 元素变化,我们的代码就需要改变。 目前 UI 自动化测试中...

2019-12-11 22:09:11

阅读数 7

评论数 0

原创 Python + Selenium结合 unittest 测试框架

如果你是学习网络爬虫,那么到这里就不用再继续看了。如果你是做自动化测试,那么接下来才是重点。 关于 unittest 框架的用法,请参考Python 测试框架。 前面我们一直在讲 Selenium 对各种操作的模拟,以及处理各种特殊页面元素和结构。虽然通过 assert 语句增加了一些预期结果与实...

2019-12-11 22:08:54

阅读数 10

评论数 0

原创 Unittest-测试运行:查看测试结果

前面我们已经使用了两种方式运行: unittest.main() TextTestRunner unittest.main() 是 unittest 中定义的 main() 方法,会自动查找当前测试文件中的所有测试类中的所有符合规则的测试用例,并自动构建测试套件。最后调用 TextTestRu...

2019-12-11 22:08:43

阅读数 7

评论数 0

原创 Unittest-快速开始:一个简单的案例

首先了解一下如何在 unittest 框架中编写测试用例。 为了更好的了解 unittest 本身,我们编写一个非常简单的函数来进行测试。 # 被测加法函数,传入待相加的参数,返回相加结果 def add(a, b): return a + b 这就是单元测试最基本的单元——函数。 我们...

2019-12-11 22:08:30

阅读数 6

评论数 0

原创 Unittest-用例执行策略:跳过用例和预期失败

Unittest 支持跳过单个测试用例方法甚至整个测试类,用于控制测试用例的运行。 Unittest 还可以将测试标记为“预期失败expected failure”,即本来就应该失败或者随着程序版本的更新已不使用的测试,标记后该用例失败,不会认为是测试结果上的失败,也就是说不会将该用例的失败计入测...

2019-12-11 22:08:17

阅读数 4

评论数 0

原创 Python + Selenium(二十四)使用cookie绕过验证码

使用 cookie 绕过验证码这种方式前提是必须要有长时间保存 cookie 的功能,比如登录时会有勾选项"保存本次登录信息",“下次自动登录”,"记住我"等。 当你勾选类似的选项后,登录成功后服务器会要求浏览器将登录信息存储你到 cookie。我们就可以...

2019-12-11 22:08:04

阅读数 9

评论数 0

原创 Unittest-discover:快捷的用例加载方式

前面我们了解了测试组织的测试套件,已经批量查找用例并生成套件的加载器。 而在 unittest 的加载器中还提供了一个更加编辑的用例加载方法 discover()。 discover() 是 TestLoader 中用于指定测试目录,并查找该目录及子目录下所有符合查找规则的所有测试用例并构建测试套...

2019-12-11 22:07:51

阅读数 6

评论数 0

原创 Python + Selenium(二十五)无头模式 headless

所谓浏览器的无头模式headless,就是浏览器在运行时处于后台操作的模式,不会看到浏览器打开,也就不会干扰你手头的工作。对于自动化测试和网络爬虫都有很大的价值。 早期我们使用 phantomJS 浏览器来实现这种模式,随着 Chrome 和 Firefox 都加入了无头模式, Selenium ...

2019-12-11 22:07:40

阅读数 5

评论数 0

原创 Unittest-测试套件:用例加载与组织

测试套件TestSuite,用于对测试用例的组织。测试用例组织好以后就可以使用运行器TestRunner运行测试套件中包含的测试用例。 为了更方便演示,我们将之前的示例拆分到几个文件中: + test_demo 测试文件夹 - add.py 待测函数 add() 所在的文...

2019-12-11 22:07:19

阅读数 3

评论数 0

原创 Pytest 为测试增加标记

Pytest 中有一个很有用的功能,就是为测试用例(测试函数,以后我们都把测试函数直接成为测试用例)添加标记的功能. 一个测试用例可以添加多个标记,一个标记可以添加给多个用例,运行时可以通过-m参数快速选择被标记的用例。 比如我们经常需要做冒烟测试或 BVT 测试,而在这类测试的时候往往并不会运行...

2019-12-05 15:55:11

阅读数 9

评论数 0

原创 Pytest 运行参数

前面已经讲过如何运行测试用例,不管用哪种方式,都可以支持这些运行参数。 查找用例 --collect-only:展示当前 pytest 能找到的用例,也就是说直接根据当前参数配置,能找到的用例列表。用于检验运行的用例是否符合你的预期。 -k:使用表达式来指定希望运行的测试用例。 ...

2019-12-01 19:38:41

阅读数 14

评论数 0

原创 Pytest 运行用例

Pytest 不止可以运行自己的用例,也可以运行 unittest 写的用例。 Pytest 有很多运行时参数,用于指定运行的用例、运行结果展示、插件参数等。 Pytest 有两种运行方式: 命令行通过 Pytest 命令运行 pytest 参数 参数值 ... 代码中使...

2019-12-01 12:51:50

阅读数 8

评论数 0

原创 Python出错重试:retrying

在编写Python代码进行自动化测试、网络爬虫或者其他与网络相关的动作的时候,由于网络影响会容易失败,而这种失败并不是我们需要去处理的。那么这种时候最好的办法就是失败后重试几次,以避免网络的间断性影响。 如果我们正常编写代码的话,可能需要 try…except ,但是这种写法很麻烦,能实现的效果也...

2019-11-29 13:25:04

阅读数 10

评论数 0

原创 最简单的GUI编程:PySimpleGUI

本系列文章将以 PySimpleGUI 库来为大家讲解 Python 的 GUI 编程。 PySimpleGUI 是适用于人类使用的 Python GUI。它将 tkinter,Qt,Remi,WxPython 等 Python 知名的 GUI 库转换为可移植的、用户更友好的、更 Pythoni...

2019-11-28 15:03:55

阅读数 34

评论数 0

原创 Pytest 快速开始

我们先来感受一下 Pytest 的用例,老规矩——待测函数依然是 add(): 首先你要保证你已下载 pytest:pip install pytest 然后再找个文件夹新建一个 test_demo.py 文件 最后写下如下内容: test_demo.py import pytest #...

2019-11-28 15:03:27

阅读数 9

评论数 0

原创 Pytest 如何编写用例

Pytest 中不仅支持类写用例,也支持用函数写用例,下面我们来看一下如何编写。 在写用例之前,我们先了解一下 Pytest 的查找规则,这样我们才知道什么样的用例才是 Pytest 允许的: Pytest 默认会从配置的目录(pytest 的专用配置文件中进行过配置,后面讲)或者从当前目录(未...

2019-11-28 15:01:46

阅读数 14

评论数 0

原创 Pytest框架综述

我将从如下几部分为大家介绍 Pytest 框架。 如何编写 Pytest 测试用例 Pytest 运行及命令行介绍 测试标记 Pytest 测试固件 Pytest 常用及趣味插件(包括测试报告、并发运行等) Pytest 如何实现各种自动化测试 Pytest 与持续集成及其他工具的结合 Pyte...

2019-11-26 21:05:38

阅读数 13

评论数 0

原创 PySimpleGUI:快速开始

好,我们的第一个 GUI 程序用大家一般在 Python 学习阶段都用过的一个简单的模拟登录。 预设账号和密码 输入账号 输入密码 点击提交 判断账号和密码是否匹配,都匹配则返回登录成功,否则登录失败。 基本逻辑如下: user = input('请输入账号:') pass...

2019-11-26 16:11:29

阅读数 12

评论数 0

原创 更强大的测试框架 Pytest

不少同学做自动化测试时选择的是 Unittest 框架。Unittest 框架是 xunit 系列的测试框架 ,这类型的框架都具有很多共同的特性,都是各种语言自带的,比如 Java -> Junit, C# -> Nunit 等等。它们都是以类作为用例的基本形态,都不支持数据驱动、报告...

2019-11-25 23:05:13

阅读数 2

评论数 0

原创 Python + Selenium(二十七)WebDriver 原理

如果要精通一门工具,一定要了解其原理。 在早期的 Selenium RC 加载浏览器后,它将JavaScript代码注入浏览器,通过 JavaScript 代码在浏览器中驱动自动化运行。 Selenium WebDriver 使用每个浏览器的内置的自动化支持来直接驱动浏览器。这些自动化的支持来源于...

2019-11-20 14:04:26

阅读数 49

评论数 0

原创 Python + Selenium(二十六)模拟手机浏览器

现在的 IT 以移动互联网为主,所以一般网站系统都会支持移动模式。 移动设备与 PC 网页浏览区别最大的就是分辨率,大型网站为了体验使用移动设备访问时都会专门提供移动版本。而其他很多站点也是采用响应式设计,也可以支持移动设备以较好的访问。 我们也需要测试网页在移动设备上的表现,而直接在手机上调用浏...

2019-11-20 14:04:13

阅读数 16

评论数 0

原创 Unittest-测试固件:初始化与清理

unittest 提供了针对测试方法、测试类、测试模块三种范围的测试固件,每个范围都有初始化和清理两种固件。 测试方法 setUp() 和 tearDown() 两个方法是针对测试用例方法级别的测试固件。 在当前测试类中重写这两个方法,当前测试类中的所有测试方法都会执行这两个测试固件。 在每个测...

2019-11-18 17:48:56

阅读数 14

评论数 0

原创 Unittest-断言:判断测试结果

通过上一节,我们了解到如何编写一个测试用例。 而测试用例中的核心就是如何判断预期与实际结果,自动化测试不像手工测试。 手工测试时,根据手工用例执行并人工去判断结果是否符合预期; 自动化测试时,需要用代码自动去判断。 而代码中判断预期与实际的方式就是断言。 Python 中内置了断言语句 ass...

2019-11-18 10:05:19

阅读数 9

评论数 0

原创 Python列表推导式问题result = [lambda x: x + i for i in range(10)]

一个经典的 Python 面试题: result = [lambda x: x + i for i in range(10)] print(result[0](10)) 问,打印的结果是多少? 19 不止result[0](10)结果是19,result[1](10),result[2](10...

2019-11-17 21:45:30

阅读数 70

评论数 0

原创 Postman Sandbox:JavaScript沙箱

Postman Sandbox (Postman 沙箱) 是一个 JavaScript 执行环境,在编写请求前的脚本和请求的测试脚本时(Postman 和 Newman 中都可以使用)。我们在 Pre-request Script 和 Tests 栏目中编写的代码都是在此沙箱中执行。 本文介绍属...

2019-11-16 12:10:23

阅读数 17

评论数 0

原创 Python + Selenium(二十三)使用百度文字识别API识别验证码

上一节我们讲到验证码,通过图像识别的方式可以识别简单的验证码,所以识别对我们的意义不是特别大。 不过我单独开这一节来讲,也算是扩充一些知识面,同时也可以练习一下关于 requests 的一些用法。对接口测试的理解也有很大的好处。 首先我们需要注册百度开发者平台,并且认证。看这里 注册好以后,创建应...

2019-11-13 09:13:48

阅读数 5

评论数 0

原创 Python + Selenium(二十二)验证码

这是一张网易邮箱的验证码图片,验证码经常出现在我们登录的时候,下面是一段截取百度百科对验证码的介绍: 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机...

2019-11-13 09:13:32

阅读数 7

评论数 0

原创 接口测试教程 - PostMan 团队协作

一般做接口测试肯定不会是单打独斗,毕竟工作量摆在那里。 那如何使用 Postman 实现多人协作呢?如果测试同一个系统,用例最好放在一起统一管理,这样才能方便运行用例。Postman 有一套内建的分享机制,团队成员必须要拥有 Postman 的账号才行。 创建账号 首先团队中的每个人必须要注册一个...

2019-11-11 20:48:11

阅读数 36

评论数 0

原创 Python 中的匿名函数

匿名也就是没有名字,函数为什么要匿名呢? 有没有感觉每次为函数取名都是件很悲剧的事情,想取个像样点的函数名很抠脑壳。 如果某个函数我们只需要使用一次的时候,还需要取名是不是就更悲剧了? Python 与 JavaScript 支持函数本身作为另外函数的参数传入。这就导致了 Python 中有很多地...

2019-11-11 00:12:37

阅读数 4

评论数 0

原创 unit test 框架介绍

Unit test 框架最初的灵感来源于 JUnit,并且与其他语言的主要单元测试框架具有类似的风格。 基本思想: 支持各种层面的自动化测试; 测试用例共享setUp初始化和tearDown清理代码; 通过各种方式组织测试和规划测试用例; 保持测试代码与测试运行之间的的独立性。 为实现其基本思...

2019-11-10 19:03:25

阅读数 18

评论数 0

原创 Python 虚拟环境

什么是虚拟环境? 虚拟环境主要是为了独立多个 Python 解释器环境出来。这有什么用呢? 比如你在网上下了一个 Python 的开源系统,其中用到了 Django 1.11 版本,而你现在系统环境中安装的是 Django 2.2 的版本,那你现在是卸载掉 2.2 的版本重新安装 1.11 的版本...

2019-11-10 14:08:41

阅读数 10

评论数 0

原创 Python + Selenium(二十一)文件上传

对于自动化测试过程中去实现文件上传,我内心是拒绝的。 目前网上很多资料谈到文件上传动辄谈 AutoIt,这是一款早期的 Windows 自动化工具,用来模拟 Windows 上的操作。这款工具已经十来年没有更新过了。 先不谈使用这些工具实现上传是否靠谱,光说文件的上传过程。文件上传一般由如下过程构...

2019-11-10 13:08:53

阅读数 3

评论数 0

原创 Python接口测试教程- requests 文件上传

前面我们通过 post 请求发送的是文本内容,也就是 ASCII 字符。如果需要发送文件到服务器,比如上传图片、视频等,就需要发送二进制数据。 通常,你想要发送一些编码为表单形式的数据——非常像一个 HTML 表单。要实现这个,只需简单地传递一个字典给 data 参数。你的数据字典在发出请求时会自...

2019-11-10 13:08:16

阅读数 45

评论数 0

原创 Python + Selenium(二十)等待

为什么需要等待? 自动化测试脚本在运行时,由于网络原因、机器卡顿、页面元素呈现等原因,导致定位失败。定位失败导致元素无法操作,获取不到用于断言的内容。 最终在检查测试结果时就会出现很多因为这些原因而导致的测试失败,需要花大量精力来排查才能找到真正意义上的问题。 所以必须要使用等待。其实 Selen...

2019-11-10 13:07:47

阅读数 7

评论数 0

原创 pip下载使用国内镜像,解决下载慢超时问题

pip 是 Python 管理第三方库的工具,非常常用。pip 会从 pypi 仓库中下载第三方库文件。 由于 pypi 处于国外,所以下载经常报超时。每次看到一片红色,真是随时怀疑自己的人品。 ReadTimeoutError: HTTPSConnectionPool(host='fi...

2019-11-09 23:36:33

阅读数 56

评论数 0

原创 Python + Selenium(十九)截图

UI 自动化中截图必不可少,截图可以展现测试过程 ,也可以检查错误情况。甚至在某种情况下还可以通过截图对比来判断程序的正确性。 自动化测试过程中 ,需要截图有以下几个用途: 记录测试过程 脚本发生异常或者失败情况时截图 部分页面需要截图对比断言 获取验证码图片用于验证码识别 其他需要记录的情况 ...

2019-11-08 23:11:16

阅读数 12

评论数 0

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