图文教程

从基础概念到工具实操,逐篇掌握测试技能。

517 篇内容

2017

9. 读取文件

这一节里我们来学习如何使用python来读取文本文件中的内容。 我们将实现一个简单的读取测试用例文件的脚本,脚本运行时候接收1个参数,用来指定需要读取的用例文件。 新建名为 的文本文件,内容如下: 新建名为 ,内容如下 在命令行中使用下面的命令去执行代码 注意:请确保先创建了用例文件case001.txt 注意:请确保用例文件case001.txt跟脚本文 …

1 分钟阅读

5.参数化的Fixture

继续上一节的测试需求,在上一节里,任何1条测试数据导致断言不通过后测试用例就会停止运行,这样每次只能检查出1条不符合规范的数据,有没有什么办法可以一次性把所有的不符合结果都测出来呢? 这时候我们就需要用到参数化的fixture特性了 新建 文件,内容如下 我们增加了2条用户信息,其中mike的密码是弱密码。 参数化fixture允许我们向fixture提供参 …

2 分钟阅读

测试圈TC:工程师的成长与坚持

前天晚上抽空听了一下 infoQ 的《极客的时间都去哪儿了?》在线视频,分享者(或者叫受访者)之一是陈皓(coolshell.cn 酷壳博主),相信你们多少都应该听说过这位大牛,他98年大学毕业,有二十多年的工作经验,增任职亚马逊和阿里巴巴,目前创业,主要帮助企业提升系统性能,仍然贴近技术人员。所以,他的部分回答值得给年轻的工程师参考。 —-以下主要观点来采 …

1 分钟阅读

6.Parametrize Fixture

装饰器可以让我们每次参数化fixture的时候传入多个项目。回忆上一节,我们参数化的时候只能传入传入1个字符串或者是其他的数据对象,parametrize每次多个参数,更加灵活。 test_eval方法中传入了2个参数,就如同 装饰器中定义的那样,因此简单理解,我们可以把parametrize装饰器想象成是数据表格,有表 …

1 分钟阅读

1. webium简介及安装

webium是基于python的一个Page Object实现, API简单友好,可以在一定程度上提升Web UI测试的生产力,值得我们进行学习。 不过注意: webium要配合selenium一起使用。 项目主页 文档 例子 一般来说我们会经常用到下面几个类 webium.Find: 在page中定位单个元素 webium.Finds: 在page中定位一 …

1 分钟阅读

7.常见套路

在使用pytest的时候,下面这些问题我们可能会经常遇到,这里给出官方的解决方案,按照套路来执行就可以了。 把命令行参数传入到用例 动态添加命令行参数 根据命令行参数来忽略用例执行 编写集成度更好的辅助断言 判断是否由pytest执行 在测试报告的头部添加内容 统计用例运行时间 定义测试步骤, …

1 分钟阅读

2. BasePage

页面类是Page Object设计模式的核心。在使用webium创建页面类的时候,必须继承 如果页面的url是固定的,那么可以在 方法中指定它,然后你就可以使用 方法来跳转到该页面。 url也可以被定义成是类的静态属性。 页面类必须持有 的实例以便操控浏览器。默认情况下,webium会使用 来创建 实例。如果你需要获取driver的实例,你可以使用 来达到目 …

1 分钟阅读

收藏清单:Java测试相关资源汇总

Vagrant - 配置简单可信赖的虚拟化环境管理工具 Docker - docker就不用多说了 Apache JMeter - 支持性能及功能测试 The Grinder - 使用多台测试机运行分布式性能测试的框架 Lightning - 融合JMeter,不支持功能测试,支持CI/CD Tsung - 基于Erlang的性能测试工具, …

2 分钟阅读

8.使用pytest做简单的接口测试

我们现在需要测试v2ex网站的查看论坛节点信息的api。具体如下: 该接口是获取数据的接口,一般来说,这种接口我们的测试重点是验证数据的准确性。 根据3A原则,我们可以设计如下的用例 测试数据: 节点的名称:python 接口地址: https://www.v2ex.com/api/nodes/show.json 断言: 返回的结果里,id必须 …

1 分钟阅读

3. Find

方法可以在页面或者其他容器中定位元素,返回 实例。 Find方法的主要用到2个参数分别是 : 定位策略,比如By.ID : 定位元素时用到的具体属性值 在定位一些自定义的对象时我们可以指定 参数来定制化 的行为。 上面的例子里,我们定义了 类,继承自 ,用以代表一般性的链接。 方法用来判断链接是否是https协议的。 表示定位元素,并返回类型是 的实例。 有 …

1 分钟阅读

收藏清单:Java自动化测试工具汇总

JUnit - 常用的测试框架 TestNG - 测试框架 Test Data Supplier - TestNG DataProvider封装,让数据的生成更加灵活 工具 JBehave - Behaviour-Driven Development (BDD)测试框架. BDD是从 test-driven development (TDD) …

2 分钟阅读

9.使用fixture参数化接口入参

接上一节v2ex网站的查看论坛节点信息的api。具体如下: 我们试一下,通过传入不同的name,我们可以获取不同的节点信息。上面例子里我们获取了python讨论区的信息。现在我们把name改成java,该接口会返回java讨论区节点的信息,如下所示 那么新的需求来了,现在我们要测试给定的几个节点名称(python/java/go/nodejs),v2ex的节 …

2 分钟阅读

4. Finds

方法的用法跟 方法基本是一致的,不过返回的是 列表。 我们甚至可以动态返回满足条件的一组元素。

1 分钟阅读

10.使用fixture参数化测试预期结果

接上一节v2ex网站的查看论坛节点信息的api。 我们在上一节的测试用例里只断言了返回值的name字段必须与我们传入的入参相同,但是返回值的id却没有进行判定。这一节里我们加强一下测试脚本,实现判断id的功能。 在 的文件中加入如下内容:

3 分钟阅读

11.生成xml格式的测试报告

pytest有非常友好的命令行报告输出,在做用例开发的时候,这是极好的。然而我们在运行用例后经常会需要将测试结果广而告之,发送给相关责任人浏览,所以生成简洁美观的测试报告是很有必要的。 pytest可以生成junit格式的xml报告,在命令行中加入 参数就可以了。 上面的命令在当前文件夹中生成了名为report.xml的测试报告 jenkins在build后 …

1 分钟阅读

5. Containers

我们可以使用容器(containers)来限制定位范围,webium的containers特性可以让我们的定位代码更加干净容易理解,避免大规模的使用难懂晦涩的xpath。 考虑下面的页面结构,为了可以遍历每一个搜索结果,我们可以使用下面的代码

1 分钟阅读

6. Logical Containers

逻辑容器适用于这样的场景:页面上有一些元素确实存在于容器中,但这些元素都有可以唯一能够定位的属性,比如id等,而我们为了代码的可读性,往往希望将这些元素放在某个容器中。 比如页面上的菜单元素,每个子菜单都有id属性,不过为了代码能够更好的被他人理解,我们希望将子菜单放到菜单容器里。 逻辑容器和普通容器的区别: 普通容器需要继承自 ,而逻辑容器不需要 定义逻辑 …

1 分钟阅读

7. 判断元素是否存在

判断元素是否存在。所有的容器类(BasePage, Container和Logical Container)都有 方法,如果对应名称的元素在页面上存在,该方法返回true。 注意:如果是通过Finds去定位的一组元素,我们也可以调用 方法来判断这组元素的存在性。如果这一组元素全部存在,返回True,如果有任意1个元素不存在,返回False。 默认情况下, 方 …

1 分钟阅读