随笔分类 - pytest学习笔记
摘要:在上一篇的 hooks 函数分享中,开发了一个本地插件示例,其实已经算是在编写插件了。今天继续跟着官方文档学习更多知识点。 一个插件包含一个或多个钩子函数,pytest 正是通过调用各种钩子组成的插件,实现了配置、搜集、运行和报告的所有方面的功能。 通常 pytes t中的插件有如下 3 类: 内置
阅读全文
摘要:上一节讲到如何安装和使用第三方插件,用法很简单。接下来解读下如何自己开发pytest插件。 但是,由于一个插件包含一个或多个钩子函数开发而来,所以在具体开发插件之前还需要先学习hooks函数。 一、什么是 hooks 函数 简单来说,在 pytest 的代码中,预留出了一些函数供我们修改,以便来改变
阅读全文
摘要:本节讨论安装和使用第三方插件。关于编写自己的插件,我们下一章继续。 一、pip 安装 就像安装一些其他第三方库一样,使用pip也可以很容易地安装第三方插件,pytest-NAME这是你要安装的插件名称: # 安装 pip install pytest-NAME #卸载 pip uninstall p
阅读全文
摘要:在之前的分享中,我们知道可以使用yield或者return关键字把fixture函数里的值传递给test函数。 这种方法很实用,比如我在fixture函数里向数据库里插入必要的测试数据,那我就可以把相关数据返回给test函数用来做相关断言查询等操作。 那如果我想把test函数(也就是测试用例)中的数
阅读全文
摘要:Pytest会在以下几个级别启用测试参数化: pytest.fixture(),可以对fixture函数进行参数化。 @pytest.mark.parametrize,可以在测试函数或类中定义多组参数和fixture。 pytest_generate_tests,可以自定义参数化方案或扩展。 一、@
阅读全文
摘要:当pytest要执行一个测试函数,这个测试函数还请求了fixture函数,那么这时候pytest就要先确定fixture的执行顺序了。 影响因素有三: scope,就是fixture函数的作用范围,比如scope='class'。 dependencies,可能会存在fixture请求了别的fixt
阅读全文
摘要:一、fixture有效性 fixture有效性,说白了就是fixture函数只有在它定义的使用范围内,才可以被请求到。比如,在类里面定义了一个fixture, 那么就只能是这个类中的测试函数才可以请求。但是,如果一个fixture定义的范围是整个模块,那么这个模块下的每个测试函数都可以去请求。 这里
阅读全文
摘要:有时候,为了满足某些场景的需要,我们知道有些测试函数在这时候肯定不能执行,或者执行了也会失败。那么我们 可以选择去跳过这个测试函数,这样也就不会影响整体的测试函数运行效果,不至于在你运行的众多绿色通过的测试 用例中,给你加点红色的failed或者error。 举个例子,有些测试函数只能在window
阅读全文
摘要:随着自动化项目开展逐步深入,case也会越写越多。那么随之而来的问题,就是case的运行时长越来越久了。 此问题属于必须解决的那种,本着拿来主义思想,有现成的绝不自己造(其实我也不费造),我们自然能搜索 到解决办法,而pytest-xdist就是其中之一,先附上地址。 pytest-xdist是一个
阅读全文
摘要:通过之前一系列的解读,相信大家对于fixture已经有了更多的理解。fixture功能强大, 我觉得用来处理setup、teardown非常的灵活,好用。 但是,毕竟它也只是一段程序代码,虽然可以帮我们做setup、teardown的处理,但是并不代表任何情况下都可以完美处理掉。 拿teardown
阅读全文
摘要:在上一章中,文末留下了一个坑待填补,疑问是这样的: 目前从官方文档中看到的是 We have to be careful though, because pytest will run that finalizer once it’s been added, even if that fixture
阅读全文
摘要:当我们运行测试函数时,我们希望确保测试函数在运行结束后,可以自己清理掉对环境的影响。 这样的话,它们就不会干扰任何其他的测试函数,更不会日积月累的留下越来越多的测试数据。 用过unittest的朋友相信都知道teardown这个函数,做的是一样的事情,那么下面姑且就把这种“善后”工作的代码 叫做te
阅读全文
摘要:既然fixtures函数也是咱们自己写的,那难免会发生异常,当fixture函数异常后,pytest中如何处理呢? 首先,在pytest中,如果一个测试函数中传入了多个fixture函数,那么pytest会尽可能的按线性顺序先后执行。 如果,先执行的fixture函数有问题引发了异常,那么pytes
阅读全文
摘要:现在我们已经知道了,fixtures是一个非常强大的功能。 那么有的时候,我们可能会写一个fixture,而这个fixture所有的测试函数都会用到它。那这个时候,就可以用 autouse自动让所有的测试函数都请求它,不需要在每个测试函数里显示的请求一遍。 具体用法就是,将autouse=True传
阅读全文
摘要:跟着节奏继续来探索fixtures的灵活性。 一、一个测试函数/fixture一次请求多个fixture 在测试函数和fixture函数中,每一次并不局限于请求一个fixture。他们想要多少就可以要多少。 下面是另一个简单的例子: import pytest # Arrange @pytest.f
阅读全文
摘要:pytest最大的优点之一就是它非常灵活。 它可以将复杂的测试需求简化为更简单和有组织的函数,然后这些函数可以根据自身的需求去依赖别的函数。 fixtures可以调用别的fixtures正是灵活性的体现之一。 一、Fixtures调用别的Fixtures 直接看一个简单示例: import pyte
阅读全文
摘要:既然fixtures是给执行测试做准备工作的,那么pytest如何知道哪些测试函数 或者 fixtures要用到哪一个fixtures呢? 说白了,就是fixtures的调用。 一、测试函数声明传参请求fixture 测试函数通过将fixture声明为参数来请求fixture。 def test_m
阅读全文
摘要:在深入了解fixture之前,让我们先看看什么是测试。 一、测试的构成 其实说白了,测试就是在特定的环境、特定的场景下、执行特定的行为,然后确认结果与期望的是否一致。 就拿最常见的登录来说,完成一次正常的登录场景,需要可用的测试环境,可以正常登录的账号和密码。 然后,用这个账号密码进行登录操作,结果
阅读全文
摘要:还是一篇关于pytest的fixture在实际使用场景的分享。 fixture我用来最多的就是写setup跟teardown了,那么现在有一个用例是测试一个列表接口,参数化了不同的状态值传参,来进行测试。 那么对于这个用例的setup跟teardown,我就要在setup里插入不同状态的测试数据,并
阅读全文
摘要:在上一篇文章中聊到了fixture的一些用法,利用params和ids这2个参数来实现对于测试数据初始的一些需求。 【pytest】(十)fixture参数化-巧用params和ids优雅的创建测试数据 但是文中的示例代码并不是真正的接口测试,只是用了一些print描述了下我的设想,以及一定的验证,
阅读全文