浅谈 pytest-fixture 使用 (优化测试用例)

pytest-fixture 使用:
fixture 分为几个级别:session、module、class、function(默认)

一、说的 fixture 的使用,我们先从用例的组织开始说起

一般我们是按照功能点组织测试用例的,将同一功能点的所有测试用例放在一个 python 文件中

1、对于某一功能点的所有测试用例的前置和后置一样的情况下,这种方法就可以满足该功能点的测试用例优化工作

2、但是对于功能点比较复杂,某一部分前置一样的情况,单独使用 function(默认)级别的 fixture 是无法最大化满足测试用例的优化工作的,此时就需要将 fixture 的几个级别结合使用了

二、fixture 初级使用方法

对于一般的初学者,一般使用 fixture 的默认级别 function,即:每条测试用例执行前、后执行 fixture,但是对于复杂的功能点,使用初级方法就显得不够用了

三、fixture 进阶使用方法(分层使用)

如何合理利用 pytest-fixture 这几个级别?是使用 fixture 的重点。

分层思想:

1、将同一功能点的所有测试用例准备好,将他们的前置列出来(从最开始的启动会话开始)

2、将所有测试用例的前置,相同的部分提取到一起,分为一个层级(直到完全没有相同的前置步骤为止)

3、统计一共将前置部分分为了几个层级

4、统计完测试用例前置部分的层级数后,以 fixture 的 function 级别为最后一个层来划分,来确定该功能点需要用到几个 fixture 级别--来确定如何组织用例

image.png

5、最后确定组织用例的方式和 fixture 级别后,开始着手编写用例,对于完全没有公共前置的用例,可以单独使用函数处理

三、举例说明

好了,说了这么多,估计大家也没听懂,那么我们用柠檬班的一个自动化测试项目来练习一下吧,看看我的这种方法有没有帮助到大家呢?

我们以【柠檬班 app 项目-前程贷 app-登录功能点】为例:

1、编写自动化测试用例:

首先编写登录功能相关的测试用例,大家都是在柠檬班学过的人,这里就不用我在多说什么了吧,基本的几个点最起码要列出来(用例 id,功能模块,前置条件,测试步骤、预期结果、实际结果、测试结果),【前置条件,测试步骤、预期结果】为测试 case 编写时需要用到的点,用例我就不拿出来了,下面直接进入前置梳条件梳理阶段

2、前置条件梳理阶段(以表格为例)

image.png

3、统计前置条件层级

image.png

4、如何组织登录功能点用例

以测试类为最大单位组织用例

测试类:

创建 class 级别 fixture:login_calss_fixture,fixture 内部实现 ①②

测试方法:

● id 为【1,2】的用例已经实现了前置,所以不用再设置 function 级别的 fixture 前置,直接定义测试方法就可以正常测试了

● id 为【3】的用例应为前置还没有实现,所以创建一个 function 级别的 fixture:login_function_fixture,前置来实现 ③,装饰该用例

5、用例的最后组织形式

@pytest.mark.usefixtures(“login_calss_fixture”)

class TestLogin:

def test_id_1:

pass

@pytest.mark.usefixtures(“login_function_fixture”)

def test_id_3:

pass

def test_id_2:

pass

================ 防喷公告,提前说明 =====================

1、本文的 fixture 使用只是自己的一点愚见,请大家慎重使用

2、本文例子只是为了解释 fixture 分层组织思想,并不一定能将这种思想更好的呈现,没办法,我也初学者,没有其他的例子,大家可以试试使用其他更复杂的例子试一下

3、本文为自己的第一篇博客,主要是响应柠檬班社区号召,对于文中语言的组织问题,如同学没有看懂但确实感兴趣,欢迎前来讨论

4、python10 期 boy 出品,随意翻版

1 回帖
请输入回帖内容 ...
  • xiaojian

    ☀️ ☀️ ☀️ 套路不错。。哈哈
    期待下一篇