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 级别--来确定如何组织用例
5、最后确定组织用例的方式和 fixture 级别后,开始着手编写用例,对于完全没有公共前置的用例,可以单独使用函数处理
三、举例说明
好了,说了这么多,估计大家也没听懂,那么我们用柠檬班的一个自动化测试项目来练习一下吧,看看我的这种方法有没有帮助到大家呢?
我们以【柠檬班 app 项目-前程贷 app-登录功能点】为例:
1、编写自动化测试用例:
首先编写登录功能相关的测试用例,大家都是在柠檬班学过的人,这里就不用我在多说什么了吧,基本的几个点最起码要列出来(用例 id,功能模块,前置条件,测试步骤、预期结果、实际结果、测试结果),【前置条件,测试步骤、预期结果】为测试 case 编写时需要用到的点,用例我就不拿出来了,下面直接进入前置梳条件梳理阶段
2、前置条件梳理阶段(以表格为例)
3、统计前置条件层级
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 出品,随意翻版
欢迎来到testingpai.com!
注册 关于