首页 > 其他分享 >自动化测试:fixture学得好,Pytest测试框架用到老

自动化测试:fixture学得好,Pytest测试框架用到老

时间:2023-09-21 22:00:33浏览次数:47  
标签:01 fixture pytest Pytest 参数 测试 test

From: https://mp.weixin.qq.com/s/agoipUlkQj3jaZ6cZc_80Q

------------------------------------------------------------------------------------

在pytest中,fixture是一种非常有用的特性,它允许我们在测试函数中注入数据或状态,以便进行测试。而参数化则是fixture的一个特性,它允许我们将不同的数据传递给fixture,从而进行多次测试。

本文将介绍如何在pytest中使用fixture进行参数化,以便在测试中使用不同的数据集。

 

一、fixture的基本用法

首先,我们需要了解fixture的基本用法。fixture是一个函数,它使用@pytest.fixture装饰器进行修饰。在测试函数中,我们可以通过参数的形式引用fixture。pytest会在测试函数执行之前运行fixture函数,并将其返回值注入到测试函数中。

下面是一个简单的示例,演示了如何使用fixture:

import pytest

@pytest.fixture
def fixture_01():
return "Hello World!"

def test_01(fixture_01):
print(fixture_01)
assert True

在这个例子中,我们定义了一个名为fixture_01的fixture,它返回一个字符串"同学,记得关注、点赞哦!"。在test_01函数中,我们通过参数的形式引用了fixture_01。当运行测试时,pytest会先执行fixture_01函数,并将其返回值注入到test_01函数中。

二、使用参数化fixture

现在,我们来介绍如何使用参数化fixture。参数化fixture允许我们将不同的数据集传递给fixture,从而进行多次测试。这可以通过在@pytest.fixture装饰器中指定params参数来实现。

下面是一个示例,演示了如何使用参数化fixture:

import pytest

@pytest.fixture(params=[1, 2, 3])
def fixture_02(request):
return request.param

def test_02(fixture_02):
print(fixture_02)
assert True

在这个例子中,我们定义了一个名为fixture_02的fixture,并使用params参数指定了一个列表[1, 2, 3]。在fixture函数中,我们使用request.param来获取当前测试使用的参数值。在test_02函数中,我们通过参数的形式引用了fixture_02。当运行测试时,pytest会分别使用[1, 2, 3]中的每个值作为参数来运行test_02函数。因此,这个测试会被执行三次,分别使用1、2和3作为输入参数。


三、使用多个参数化fixture

有时我们需要在测试中使用多个参数化fixture。这可以通过在测试函数中引用多个fixture来实现。下面是一个示例,演示了如何使用多个参数化fixture:

import pytest

@pytest.fixture(params=[1, 2, 3])
def fixture_03(request):
return request.param

@pytest.fixture(params=["a", "b", "c"])
def fixture_04(request):
return request.param

def test_03(fixture_03, fixture_04):
print(fixture_03, fixture_04)
assert True

在这个例子中,我们定义了两个参数化fixture:fixture_03和fixture_04。fixture_03使用了一个列表[1, 2, 3]作为参数,而fixture_04使用了一个列表["a", "b", "c"]作为参数。在test_03函数中,我们通过参数的形式引用了这两个fixture。当运行测试时,pytest会分别使用[1, 2, 3]和["a", "b", "c"]中的每个值作为参数来运行test_03函数。因此,这个测试会被执行九次,分别使用不同的输入参数组合,即【1-a,2-a,3-a,1-b,2-b,3-b,1-c,2-c,3-c】。

标签:01,fixture,pytest,Pytest,参数,测试,test
From: https://www.cnblogs.com/Raul2018/p/17721064.html

相关文章

  • week1 渗透测试工具的安装使用
    一、虚拟机的安装使用文档步骤安装,过程中未出现问题使用虚拟机打开镜像问题:无网络解决:打开虚拟机设置网络适配器:网络连接选择“NAT模式”二、工具的安装Python,Java镜像中已安装,验证环境配置成功pythonjavaSQLmap按文档安装,并验证安装成功......
  • iOS应用程序发布流程:从测试到上架的完整指南
    ​ 目录 转载:iOS应用程序的签名、重签名和安装测试前言打开要处理的IPA文件设置签名使用的证书和描述文件开始iosipa重签名 转载:iOS应用程序的签名、重签名和安装测试前言ipa编译出来后,或者ipa进行修改后,需要进行重新签名才能安装到测试手机,或者提交appstore供a......
  • selenium自动化测试-获取动态页面小说
    有的网站页面是动态加载的资源,使用bs4库只能获取静态页面内容,无法获取动态页面内容,通过selenium自动化测试工具可以获取动态页面内容。参考之前的"bs4库爬取小说工具"文章代码,稍微修改下,就可以转成获取动态页面小说工具。第一步:先确定目标网址先找到小说目录页面。网址首页:'ht......
  • 心理测评测试h5公众号字节微信小程序app开源版开发
    心理测评测试h5公众号字节微信小程序app开源版开发以下是心理测评测试H5字节微信小程序App开源版的功能列表:用户注册和登录:用户可以通过注册账号和登录账号来使用小程序。心理测评测试:提供多种心理测评测试题目,用户可以通过选择答案来完成测试。测试结果分析:根据用户的测试结果,生成......
  • 良好的测试环境应该怎么搭建?对软件产品起到什么作用?
    为了确保软件产品的高质量,搭建一个良好的测试环境是至关重要的。在本文中,我们将从多个角度出发,详细描述良好的测试环境的搭建方法、注意事项以及对软件产品的作用。一、软件测试环境的搭建1、从硬件设备的选择与配置开始。对于大型软件产品的测试,建议使用高性能的服务......
  • 全栈性能测试工具:RunnerGo
    随着自动化测试技术的不断进步,自动化测试已成为企业级应用的重要组成部分。然而,传统的性能测试工具往往复杂、繁琐,让企业陷入了两难的境地。软件测试正逐渐从手动测试向自动化测试转变,各种自动化测试工具和框架层出不穷,极大地提高了测试效率和质量。近年来出现的敏捷开发方法使得......
  • 全栈性能测试工具:RunnerGo
    随着自动化测试技术的不断进步,自动化测试已成为企业级应用的重要组成部分。然而,传统的性能测试工具往往复杂、繁琐,让企业陷入了两难的境地。软件测试正逐渐从手动测试向自动化测试转变,各种自动化测试工具和框架层出不穷,极大地提高了测试效率和质量。近年来出现的敏捷开发方法使得软......
  • Typescript 测试驱动开发 TDD (9)
    匹配器(Matchers) 1.toBeJest使用所谓的匹配器来将测试中的预期值与接收到的值进行匹配。让我们快速看一下其中一些匹配器,如下所示:1it("shouldmatchwithtoBe",()=>{2expect(1).toBe(2);3});在这里,我们使用toBe匹配器来测试值1是否与值2相同。显然,这个测......
  • Typescript 测试驱动开发 TDD (8)
    强制运行和跳过测试 (Forcingandskippingtests)在处理一个已经编写了多个测试的应用程序时,我们通常只想运行特定的测试或者一组特定的测试。这种操作被称为强制运行测试,因为我们要求整个测试套件只运行指定的测试。可以通过以下两种方式来实现:1describe("agroupoftest......
  • Typescript 测试驱动开发 TDD (7)
    分组测试(Groupingtests)在一个测试规范文件中,我们可能希望将我们的测试分组为逻辑集合。Jest使用describe函数来实现这个目的,如下所示的测试代码:1describe("agroupoftests",()=>{2test("firsttest",()=>{3expect("stringvalue").toEqual("......