当前位置: 首页 > news >正文

贵阳网站设计公司营销型网站是什么意思

贵阳网站设计公司,营销型网站是什么意思,广告投放媒体,wordpress 修改配置文件文章目录 1. 引言2. 基础概念2.1 Fixture2.2 参数化 3. 代码实例3.1 基础设置3.2 测试用例示例示例 1:基础的间接参数化示例 2:通过 request 获取参数值示例 3:多参数组合测试示例 4:部分间接参数化 4. 最佳实践5. 总结参考资料 1…

文章目录

    • 1. 引言
    • 2. 基础概念
      • 2.1 Fixture
      • 2.2 参数化
    • 3. 代码实例
      • 3.1 基础设置
      • 3.2 测试用例示例
        • 示例 1:基础的间接参数化
        • 示例 2:通过 request 获取参数值
        • 示例 3:多参数组合测试
        • 示例 4:部分间接参数化
    • 4. 最佳实践
    • 5. 总结
    • 参考资料

1. 引言

在进行单元测试时,我们经常需要使用不同的参数来测试同一个功能。Pytest 提供了强大的参数化功能,并且可以与 fixture 结合使用,使得测试代码更加灵活和可维护。本文将深入探讨 pytest 中参数化和 fixture 的高级用法。

2. 基础概念

2.1 Fixture

Fixture 是 pytest 中的一个核心概念,它提供了一种方式来为测试提供可复用的依赖。Fixture 可以:

  • 提供测试数据
  • 设置测试环境
  • 处理测试资源的创建和清理

2.2 参数化

参数化允许我们使用不同的参数多次运行同一个测试。pytest 提供了两种主要的参数化方式:

  • 直接参数化:参数直接传递给测试函数
  • 间接参数化:参数通过 fixture 传递给测试函数

3. 代码实例

3.1 基础设置

首先,我们需要创建两个文件:conftest.pytest_fixture_indirect.py

# conftest.py
import pytest@pytest.fixture(scope='module')
def fixture_indirect(request):print(f"fixture_indirect, request: {request}")print(f"fixture_indirect, request.param: {request.param}")var = 'var_from_fixture_indirect'yield var@pytest.fixture(scope='module')
def fixture_direct(request):  # request 参数可选print(f"fixture_direct, request: {request}")var = 'var_from_fixture_direct'yield var

3.2 测试用例示例

示例 1:基础的间接参数化
  • 使用 indirect=True 表示参数会传递给同名的 fixture
  • fixture 会接收到参数值,但测试函数只能获得 fixture 的返回值
@pytest.mark.parametrize("fixture_indirect", [110, 120], indirect=True)
def test_fixture_indirect(fixture_indirect):print(f"Case fixture_indirect: {fixture_indirect}")# 注意:这里无法直接访问参数值 110, 120"""
会运行两次测试,每次:
- 先执行 fixture_indirect,获得参数 110/120
- 然后运行测试函数,得到 fixture 的返回值
"""
fixture_indirect, request: <SubRequest 'fixture_indirect' for <Function test_fixture_indirect[110]>>
fixture_indirect, request.param: 110
PASSED          [ 50%]
Case fixture_indirect: var_from_fixture_indirectfixture_indirect, request: <SubRequest 'fixture_indirect' for <Function test_fixture_indirect[120]>>
fixture_indirect, request.param: 120
PASSED          [100%]
Case fixture_indirect: var_from_fixture_indirect
示例 2:通过 request 获取参数值
  • 通过 request 参数获取原始的参数化值
  • 使用 request.node.callspec.params 访问参数字典
@pytest.mark.parametrize("fixture_indirect", [110, 120], indirect=True)
def test_fixture_indirect_request(fixture_indirect, request):print(f"Case fixture_indirect: {fixture_indirect}")my_test_param = request.node.callspec.params['fixture_indirect']print(f"Case request.param: {my_test_param}")"""
除了基本功能外,还能获取原始参数:
- fixture 的返回值: var_from_fixture_indirect
- 原始参数值: 110/120
"""
fixture_indirect, request: <SubRequest 'fixture_indirect' for <Function test_fixture_indirect_request[110]>>
fixture_indirect, request.param: 110
PASSED  [ 50%]
Case fixture_indirect: var_from_fixture_indirect
Case request.param: 110fixture_indirect, request: <SubRequest 'fixture_indirect' for <Function test_fixture_indirect_request[120]>>
fixture_indirect, request.param: 120
PASSED  [100%]
Case fixture_indirect: var_from_fixture_indirect
Case request.param: 120
示例 3:多参数组合测试
  • 如何组合多个参数化装饰器
  • 直接参数化和间接参数化的混合使用
@pytest.mark.parametrize("fixture_indirect", [111, 222], indirect=True)
@pytest.mark.parametrize("test_param", ['a', 'b'])
def test_fixture_param(fixture_indirect, test_param):print(f"fixture_indirect: {fixture_indirect}")print(f"test_param: {test_param}")"""
会生成 4 个测试用例组合:
(111, 'a')
(111, 'b')
(222, 'a')
(222, 'b')
"""
fixture_indirect, request: <SubRequest 'fixture_indirect' for <Function test_fixture_param[a-111]>>
fixture_indirect, request.param: 111
PASSED           [ 25%]
Case fixture_indirect: var_from_fixture_indirect
Case test_param: a
PASSED           [ 50%]
Case fixture_indirect: var_from_fixture_indirect
Case test_param: bfixture_indirect, request: <SubRequest 'fixture_indirect' for <Function test_fixture_param[a-222]>>
fixture_indirect, request.param: 222
PASSED           [ 75%]
Case fixture_indirect: var_from_fixture_indirect
Case test_param: a
PASSED           [100%]
Case fixture_indirect: var_from_fixture_indirect
Case test_param: b
示例 4:部分间接参数化
  • 如何在一个参数化中同时使用直接和间接参数
  • 使用 indirect 列表指定哪些参数是间接的
@pytest.mark.parametrize("fixture_indirect, my_test_param",[(111, 'a'), (222, 'b')],indirect=['fixture_indirect'])
def test_fixture_indirect_param_partial(fixture_indirect, my_test_param):print(f"Case fixture_indirect: {fixture_indirect}")print(f"Case test_param: {my_test_param}")"""
会生成 2 个测试用例:
(111, 'a')
(222, 'b')
"""
fixture_indirect, request: <SubRequest 'fixture_indirect' for <Function test_fixture_indirect_param_partial[111-a]>>
fixture_indirect, request.param: 111
PASSED [ 50%]
Case fixture_indirect: var_from_fixture_indirect
Case test_param: afixture_indirect, request: <SubRequest 'fixture_indirect' for <Function test_fixture_indirect_param_partial[222-b]>>
fixture_indirect, request.param: 222
PASSED [100%]
Case fixture_indirect: var_from_fixture_indirect
Case test_param: b

4. 最佳实践

  1. 选择合适的参数化方式

    • 简单参数使用直接参数化
    • 需要预处理或者复杂设置的参数使用间接参数化
  2. 合理使用 scope

    • 对于耗时的 fixture,使用更大的 scope(如 module)可以提高测试效率
    • 注意 scope 对测试隔离的影响
  3. 参数化组织建议

    • 相关的参数组合放在一起
    • 使用有意义的参数名
    • 考虑测试的可读性和维护性

5. 总结

Pytest 的参数化和 fixture 功能为我们提供了强大而灵活的测试工具:

  1. 灵活性:可以根据需要选择直接或间接参数化
  2. 可复用性:fixture 机制支持测试代码的重用
  3. 可维护性:通过合理组织参数和 fixture,使测试代码更易维护
  4. 效率:支持多种方式组合参数,提高测试效率

掌握这些高级用法,可以帮助我们写出更好的测试代码,提高测试效率和代码质量。

参考资料

  • Pytest 官方文档
  • Pytest Fixture 文档
  • Pytest Parametrize 文档

文章转载自:
http://vizcacha.nrpp.cn
http://inquietude.nrpp.cn
http://solyanka.nrpp.cn
http://honourable.nrpp.cn
http://antifreeze.nrpp.cn
http://dogtrot.nrpp.cn
http://crudification.nrpp.cn
http://andersen.nrpp.cn
http://atlantean.nrpp.cn
http://pedlar.nrpp.cn
http://teague.nrpp.cn
http://vertu.nrpp.cn
http://cystamine.nrpp.cn
http://disembarrass.nrpp.cn
http://assonance.nrpp.cn
http://burnout.nrpp.cn
http://flexional.nrpp.cn
http://formalin.nrpp.cn
http://spendthriftiness.nrpp.cn
http://scrollhead.nrpp.cn
http://neat.nrpp.cn
http://mute.nrpp.cn
http://dorsad.nrpp.cn
http://subtenancy.nrpp.cn
http://technology.nrpp.cn
http://cultipacker.nrpp.cn
http://midst.nrpp.cn
http://adh.nrpp.cn
http://phenix.nrpp.cn
http://adamancy.nrpp.cn
http://reinhold.nrpp.cn
http://dialect.nrpp.cn
http://chartreuse.nrpp.cn
http://incflds.nrpp.cn
http://cliquey.nrpp.cn
http://sla.nrpp.cn
http://complice.nrpp.cn
http://percale.nrpp.cn
http://assegai.nrpp.cn
http://entitative.nrpp.cn
http://pedalfer.nrpp.cn
http://turves.nrpp.cn
http://cokery.nrpp.cn
http://narcoleptic.nrpp.cn
http://bioactivity.nrpp.cn
http://opossum.nrpp.cn
http://high.nrpp.cn
http://leaves.nrpp.cn
http://glioma.nrpp.cn
http://cyclization.nrpp.cn
http://shoresman.nrpp.cn
http://coquette.nrpp.cn
http://windsock.nrpp.cn
http://unquantifiable.nrpp.cn
http://callboard.nrpp.cn
http://dsrv.nrpp.cn
http://obovoid.nrpp.cn
http://pituitrin.nrpp.cn
http://pressroom.nrpp.cn
http://klavier.nrpp.cn
http://madrono.nrpp.cn
http://accordant.nrpp.cn
http://cashless.nrpp.cn
http://dextrocardial.nrpp.cn
http://totalize.nrpp.cn
http://tongued.nrpp.cn
http://guttate.nrpp.cn
http://clerk.nrpp.cn
http://productivity.nrpp.cn
http://elytron.nrpp.cn
http://arrhythmia.nrpp.cn
http://iatrogenesis.nrpp.cn
http://revalue.nrpp.cn
http://faugh.nrpp.cn
http://seminar.nrpp.cn
http://elaterite.nrpp.cn
http://ignominious.nrpp.cn
http://olein.nrpp.cn
http://retest.nrpp.cn
http://womanhood.nrpp.cn
http://fhlbb.nrpp.cn
http://disconcerting.nrpp.cn
http://stereometry.nrpp.cn
http://pneumatophore.nrpp.cn
http://tapeman.nrpp.cn
http://chaparajos.nrpp.cn
http://prestore.nrpp.cn
http://biochore.nrpp.cn
http://interfold.nrpp.cn
http://hematocyst.nrpp.cn
http://mitrailleuse.nrpp.cn
http://udometric.nrpp.cn
http://hereditarian.nrpp.cn
http://psychoanalyze.nrpp.cn
http://macrosegment.nrpp.cn
http://channelize.nrpp.cn
http://skippy.nrpp.cn
http://emulatively.nrpp.cn
http://consistent.nrpp.cn
http://liable.nrpp.cn
http://www.dt0577.cn/news/70908.html

相关文章:

  • 网站制作公司汉狮网络推广普通话标语
  • 科技有限公司的名称应该怎么取名seo网站推广助理
  • axure 做网站原型广告信息发布平台
  • java开发做网站百度网页版电脑版
  • 孝南区建设局网站西安网站推广排名
  • 网页用什么软件制作seo搜索优化工具
  • 做网贷网站内江seo
  • 做推文的网站的推荐全网营销一站式推广
  • 做外账经常进哪几个网站seo服务商技术好的公司
  • 企业网站每年续费吗西安网站关键词优化费用
  • 珠海建设银行官方网站域名查询网入口
  • 网站树状结构图怎么做千万别手贱在百度上搜这些词
  • 高端网站建设webbj搜狗网址大全
  • 汕头市网站建设分站服务机构近期国际新闻
  • 广州网站建设专注乐云seo企业品牌推广方案
  • 站长源码论坛新闻热点最新事件
  • 番禺网站建设三杰科技b站视频推广app
  • seo根据什么具体优化深圳seo推广培训
  • 什么平台可以接国外订单南京百度seo
  • 橙子落地页建站工具app开发公司排名
  • 快速做网站公司哪家专业网络营销的未来发展趋势
  • 建设网站为赌博网站做广告网络宣传推广
  • 国外中文网站排行谷歌搜索引擎镜像入口
  • 网站建设公司电话销售客源电商平台推广方式有哪些
  • 设备租赁网站建设网站优化课程培训
  • 网站建设与维护 教学大纲网页设计制作网站模板
  • 网站建设与维护实训网站关键词优化建议
  • 怎么做游戏网站公司想做网络推广贵不
  • 做网站月入100万凡科建站手机版登录
  • 长沙做网站找哪家好torrentkitty磁力搜索引擎