1.快速开始
pytest测试框架可以让我们很方便的编写测试用例,这些用例写起来虽然简单,但仍然可以规模化以及编写更加复杂的测试用例。 官方文档 用下面的命令去检查一下pytest是否成功安装 创建名为 的文件,敲如下内容 上面的代码做了2件事情 定义了名为 的全局函数,作用是把string反转并返回。比如输入"abc"会反转成"cba" 定义了名为 的函数,包含了2个断 …
按主题探索文章、教程与工程实践。
11 篇内容pytest测试框架可以让我们很方便的编写测试用例,这些用例写起来虽然简单,但仍然可以规模化以及编写更加复杂的测试用例。 官方文档 用下面的命令去检查一下pytest是否成功安装 创建名为 的文件,敲如下内容 上面的代码做了2件事情 定义了名为 的全局函数,作用是把string反转并返回。比如输入"abc"会反转成"cba" 定义了名为 的函数,包含了2个断 …
在现实的测试活动中,我们经常会定义多个用例文件,用来实现业务逻辑或其他逻辑上用例的物理分隔,比如 使用pytest可以很方便的执行批量执行一组文件中定义的用例。 在批量执行用例之前,我们需要了解一下pytest的潜规则,注意,由于pytest可以支持丰富的定制选项,下面的潜规则是在没有定制的默认情况下的缺省规则 pytest会找当前以及递查找子文件夹下面所有 …
Assert就是断言,每个测试用例都需要断言。 与unittest不同,pytest使用的是python自带的assert关键字来进行断言,大大降低了学习成本。 assert关键字后面可以接一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败。 pytest的用例失败描述非常详尽,一目了人。考虑下面的例子 执行上面的用例 …
我们可以简单的把Fixture理解为准备测试数据和初始化测试对象的阶段。 一般我们对测试数据和测试对象的管理有这样的一些场景 所有用例开始之前初始化测试数据或对象 所有用例结束之后销毁测试数据或对象 每个用例开始之前初始化测试数据或对象 每个用例结束之后销毁测试数据或对象 在每个/所有module的用例开始之前初始化数据或对象 在每个/所有module的用例 …
继续上一节的测试需求,在上一节里,任何1条测试数据导致断言不通过后测试用例就会停止运行,这样每次只能检查出1条不符合规范的数据,有没有什么办法可以一次性把所有的不符合结果都测出来呢? 这时候我们就需要用到参数化的fixture特性了 新建 文件,内容如下 我们增加了2条用户信息,其中mike的密码是弱密码。 参数化fixture允许我们向fixture提供参 …
装饰器可以让我们每次参数化fixture的时候传入多个项目。回忆上一节,我们参数化的时候只能传入传入1个字符串或者是其他的数据对象,parametrize每次多个参数,更加灵活。 test_eval方法中传入了2个参数,就如同 装饰器中定义的那样,因此简单理解,我们可以把parametrize装饰器想象成是数据表格,有表 …
在使用pytest的时候,下面这些问题我们可能会经常遇到,这里给出官方的解决方案,按照套路来执行就可以了。 把命令行参数传入到用例 动态添加命令行参数 根据命令行参数来忽略用例执行 编写集成度更好的辅助断言 判断是否由pytest执行 在测试报告的头部添加内容 统计用例运行时间 定义测试步骤, …
我们现在需要测试v2ex网站的查看论坛节点信息的api。具体如下: 该接口是获取数据的接口,一般来说,这种接口我们的测试重点是验证数据的准确性。 根据3A原则,我们可以设计如下的用例 测试数据: 节点的名称:python 接口地址: https://www.v2ex.com/api/nodes/show.json 断言: 返回的结果里,id必须 …
接上一节v2ex网站的查看论坛节点信息的api。具体如下: 我们试一下,通过传入不同的name,我们可以获取不同的节点信息。上面例子里我们获取了python讨论区的信息。现在我们把name改成java,该接口会返回java讨论区节点的信息,如下所示 那么新的需求来了,现在我们要测试给定的几个节点名称(python/java/go/nodejs),v2ex的节 …
接上一节v2ex网站的查看论坛节点信息的api。 我们在上一节的测试用例里只断言了返回值的name字段必须与我们传入的入参相同,但是返回值的id却没有进行判定。这一节里我们加强一下测试脚本,实现判断id的功能。 在 的文件中加入如下内容:
pytest有非常友好的命令行报告输出,在做用例开发的时候,这是极好的。然而我们在运行用例后经常会需要将测试结果广而告之,发送给相关责任人浏览,所以生成简洁美观的测试报告是很有必要的。 pytest可以生成junit格式的xml报告,在命令行中加入 参数就可以了。 上面的命令在当前文件夹中生成了名为report.xml的测试报告 jenkins在build后 …