还是一篇关于pytest的fixture在实际使用场景的分享。

fixture我用来最多的就是写setup跟teardown了,那么现在有一个用例是测试一个列表接口,参数化了不同的状态值传参,来进行测试。

那么对于这个用例的setup跟teardown,我就要在setup里插入不同状态的测试数据,并且在测试完成后,在teardown里清除掉插入的数据。

一、setup

不过在插入数据的时候,我不想要一次性的把所有状态的数据都插入进去。比如1,2,3,4,5 有5个状态的参数,我想执行1的时候,插入状态

1的数据,测试完成后,删除刚才插入的这条数据,后面以此类推。

那么,这里还是要用到参数传递的一个效果了,这个在之前的文章里也讲过,有兴趣可以去看下,这里不再赘述。

@pytest.fixture(params=[1, 2, 3, 4, 5])
def init_allot_task_status(request):
status = request.param
db = DB()
insert_allot_task_sql = """
INSERT INTO purchase_allot (`id`, `allot_sn`... )
""".format(10000086, status)
db.exec_sql(insert_allot_task_sql)
yield status #这里把参数给出去,供测试用例使用
delete_sql = "DELETE from sm_purchase_allot WHERE id = {}".format(10000086)
print("执行delete-sql:", delete_sql)
db.exec_sql(delete_sql)
db.close()

yield之前,其实做的就是插入数据,并且通过yield把request.param拿到的参数给出去,给测试用例使用。

二、teardown

yield之后,则就是删除之前插入的数据了,这里我为了方便,插入的测试数据id取了一个单独的,所以删除的时候直接删除这个id的数据即可。

再来看一下测试用例

def test_allot_list_query_by_status(init_allot_task_status):
"""
测试不同状态的列表查询
在fixture中做了参数化
1-待处理、2-处理中、3-已发货、4-已完成、5已取消
"""
payload = {"status": init_allot_task_status} # 因为fixture中的yield做了参数的返回,这里可以直接使用
r = requests.post(QA_URL + API_URL, json=payload, headers=HEADER)
result = r.json() assert result["result"] == "ok"
assert result["errmsg"] == "success"
assert result["row"]["taskListOfPage"]["resultData"][0]["status"] == init_allot_task_status # 因为fixture中的yield做了参数的返回,这里可以直接使用

将fixture init_allot_task_status传入测试case中,这样的话 在case执行的时候会先执行fixture方法,而fixture在执行的时候,则会进行参数化,并且把每次使用的参数

返回给测试case,供测试用例发起请求,断言等使用。

三、执行测试

执行测试用例,可以看到最终的运行过程:



参数分别执行,并且在对应测试用例的开始跟结尾做好测试数据的插入和删除工作。

【pytest】(十二)参数化测试用例中的setup和teardown要怎么写?的更多相关文章

  1. perl5 第十二章 Perl5中的引用/指针

    第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用  子程序模板七.数组与子程序八.文件句 ...

  2. 利用WPF建立自己的3d gis软件(非axhost方式)(十二)SDK中的导航系统

    原文:利用WPF建立自己的3d gis软件(非axhost方式)(十二)SDK中的导航系统 先下载SDK:https://pan.baidu.com/s/1M9kBS6ouUwLfrt0zV0bPew ...

  3. vue第十二单元(vue中过渡效果的实现)

    第十二单元(vue中过渡效果的实现) #课程目标 熟练掌握transition组件的用法 熟练使用transition组件做过渡特效 熟练使用transition组件做动画特效 了解使用transit ...

  4. python单元测试框架pytest——fixture函数(类似unitest的setup和teardown)

    pytest的setup和teardown函数(曾被一家云计算面试官问到过). pytest提供了fixture函数用以在测试执行前和执行后进行必要的准备和清理工作.与python自带的unitest ...

  5. python:pytest中的setup和teardown

    原文:https://www.cnblogs.com/peiminer/p/9376352.html 之前我写的unittest的setup和teardown,还有setupClass和teardow ...

  6. Junit测试中的setup和teardown 和 @before 和 @After 方法

    这几天做Junit测试接触到了setup和teardown两个方法,简单的可以这样理解它们,setup主要实现测试前的初始化工作,而teardown则主要实现测试完成后的垃圾回收等工作. 需要注意的是 ...

  7. 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  8. javaweb学习总结二十二(servlet开发中常见的问题汇总)

    一:web应用的映射问题 通常我们从别人那里拷贝来的代码,自己会修改应用的名称,但是web映射的访问路径并没有修改,还是原来的映射. 解决方法: 工程右键--properties--myeclipse ...

  9. salesforce零基础学习(七十二)项目中的零碎知识点小总结(一)

    项目终于告一段落,虽然比较苦逼,不过也学到了好多知识,总结一下,以后当作参考. 一.visualforce标签中使用html相关的属性使用 曾经看文档没有看得仔细,导致开发的时候走了一些弯路.还好得到 ...

随机推荐

  1. kali2020 装不上docker

    问题描述 如图,不支持i386体系架构 所以百度了一下啥是i386,以及docker支持哪些体系架构 官网的截图如下: 然后我发现我一直以为我装的是64位debian,实际上我装的是32位的 补充一下 ...

  2. Python:值得学习的二十个技巧

    本文为大家介绍20个值得记住的 Python 技巧,可以提升您编程技巧, 并为您节省大量时间. 在平常编程过程中,以下技巧大多非常有用. 1 字符串反转 使用切片反转字符串. str1="q ...

  3. SonarQube - 以Docker方式启动SonarQube

    1 - SonarQube镜像 https://hub.docker.com/_/sonarqube/ Dockerfile - 7.9.1-community https://github.com/ ...

  4. React Native Android 环境搭建

    因为工作需要,最近正在学习React Native Android.温故而知新,把学习的内容记录下来巩固一下知识,也给有需要的人一些帮助. 需要说明的是,我刚接触React Native也不久,对它的 ...

  5. 01. Consul 入门

    简介 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册 ...

  6. easyui获取table列表中所有数据组装成json格式发送到后台

    jsp代码 var rows =$('#findAllRolestable').datagrid('getSelections'); var result = JSON.stringify(rows) ...

  7. Java面试被经常问到的常用算法

    一.冒泡排序 原理:比较两个相邻的元素,较大的放在右边 N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次 最好时间复杂度为O(N) Cmax = N(N-1)/2 = O(N2 ...

  8. 请问如何用LoadRunner进行测试。

    1.建立测试计划,确定测试标准和测试范围 2.设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等 3.根据测试用例,开发自动测试脚本和场景: 录制测试脚本:新建一个脚本(Web/HTML协议 ...

  9. Unity Package Manager

    (注:Unity 2018.1及以后的版本才可以使用Package Manager.) 一个package是一个容器,里面放的是Assets, Shaders, Textures, plug-ins, ...

  10. ADO.NET对SqlServer进行简单的增删改查

    对数据库进行增删改查,首先想到的应该就是连接字符串了. 我们的连接字符串是由"Server=地址(本机=local);Database=数据库名称;User Id=登陆用户名;Passwor ...