pytest和ddt
参考链接:https://blog.csdn.net/qq_36502272/article/details/100986069
什么是ddt?ddt是一种测试思想,意为数据驱动测试,在unittest框架中我们也用到了ddt库,能简化我们的代码。但是pytest却不能使用ddt库,这让人很烦恼。但是,pytest毕竟是这么多人的选择,不可能没有办法将测试数据参数化的。
参数化测试数据就需要用到@pytest.mark.parametrize()装饰器了,我们只需要传递两个参数给装饰器,参数1是一个字符串,里面是你的测试方法需要传递的形参,需要用逗号隔开;参数2则是测试数据了,是一个list或者couple,里面可能嵌套list或者couple
实例:
@pytest.mark.parametrize("name,age",[[1,1],[1,2],[1,1],[3,2],[1,1],[1,3]])
def test(name,age,country='china'):print(name,age,country)assert age==name
这里有几个点要注意:
1.装饰器中第一个参数中的形参个数要和第二个参数中每个值中的len相等,不然会报错
2.装饰器第一个参数中的名要和测试方法的形参名一致,不然会报错
3.测试方法的形参数量不一定和装饰器方法中的长度一致。
#使用内置的mark.xfail标记为失败的用例就不运行了,直接跳过显示xfailed
@pytest.mark.parametrize("user,pwd",[("18221124104",111111),pytest.param("18200000000",111111,marks=pytest.mark.xfail)])
def test(user,pwd):print(user,pwd)assert user == "18221124104"assert pwd== 111111
若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器
@pytest.mark.parametrize("x", [0, 1])
@pytest.mark.parametrize("y", [2, 3])
def test_foo(x, y):print("测试数据组合:x->%s, y->%s" % (x, y))--------------------------------------------------------------
test_login.py::test_foo[2-0] PASSED [ 25%]测试数据组合:x->0, y->2test_login.py::test_foo[2-1] PASSED [ 50%]测试数据组合:x->1, y->2test_login.py::test_foo[3-0] PASSED [ 75%]测试数据组合:x->0, y->3test_login.py::test_foo[3-1] PASSED [100%]测试数据组合:x->1, y->3
pytest和ddt相关推荐
- web自动化测试框架搭建(python+selenium+pytest+pom+ddt)
本篇文件利用当下流行的pom设计模式设置测试框架,编写测试用例,生成测试报告,并最终jenkins集成. 一.selenium selenium是一个开源的web ui自动化测试工具,详细就不再过多介 ...
- 【python做接口测试的学习记录day10——pytest自动化测试框架之接口加密】
通常出于安全性考虑,开发会对接口参数进行加密,加密方式有很多种,例如MD5.Base64.RSA双密钥加密方式等,下面我们以MD5加密方式的登录接口为例,此接口对密码进行了加密,如果测试时直接使用未加 ...
- 三天学会Selenium,阿里p7精心整理自动化测试Selenium大礼包
大家都知道Selenium很好用,Selenium作为一个 Web 应用程序自动化测试工具,Selenium 可以直接驱动浏览器,模拟真正的用户操作,解决回归测试和多浏览器兼容性测试问题:而且跟 Py ...
- js修改id的值_如何修改pytesthtml源码来优化接口自动化测试报告
你这么优秀,一定只想把"柠檬班"置顶 ▲ 前言 大家好,我是柠檬班Python6期的学员小翟. 以前常用unittest做接口自动化测试,后来想获取单个接口的响应时间,便采用pyt ...
- 自动化测试-数据驱动
一.简介 数据驱动:是以数据来驱动整个测试用例的执行,也就是测试数据决定测试结果.比如我们要测试加法,我们的测试数据是1和1,测试结果就是2,如果测试数据是1和2,测试结果就是3. 二.特点 1.数据 ...
- selenium之使用xlrd模块读取ecel文件,使用pytest参数化实现DDT
1.调用xlrd:import xlrd 2.使用xlrd模块调用excel表格 3.结合pytest参数化格式处理方式来实现DDT 首先创建个excel表格: 代码: import pytest i ...
- python+requests+pytest+allure+yaml+DDT+logs 接口自动化框架使用手册
一.单条测试用例 无ddt数据驱动的场景 1 config.yaml 中书写基础路径 2 在redloads模块中,新建一个demo_fun.py文件, 其中demo要用的方法写在其中 如:读取con ...
- 软件测试培训教程:pytest与unittest区别
在软件测试培训教程中,会讲到关于pytest与unittest区别,那么本期教程小编就为大家详细的介绍一下pytest与unittest区别有哪些? pytest与unittest区别: 一.用例编写 ...
- [转]Python测试框架对比----unittest, pytest, nose, robot framework对比
测试框架 什么是框架? 框架(Framework)是整个或部分系统的可重用设计, 框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求, ...
最新文章
- linux内核网络协议栈--接收流程及函数(九)
- springboot @ConfigurationProperties注入属性流程
- JUnit测试方法订购
- linux caffe ssd安装错误,ubuntu16.04安装caffe以及各种问题汇总
- zero-shot learning
- 170824、storm 环境搭建
- 如何设置PDFjs 页面标题
- html5建站模板怎么用,怎么用模板建网站
- 苹果12可以双开微信吗 iPhone 12双开微信教程「iphone技巧」
- html input限制输入小数,限制input输入小数只能到3位或者只能输入正整数(兼容ios)...
- 疫情重压下,屈臣氏为何上半年仍盈利?
- 辟邪剑法之字符串常用API
- 如何判断一个单链表是否有环?
- 跨专业考研应该怎么做?
- Interconnection
- 史上最详细Mysql免安装版教程
- python基础: os.path.realpath()、os.path.getcwd()、 os.path.abspath() 的区别
- chrome谷歌浏览器:您使用的是不受支持的命令行标记:--extensions-on-chrome-urls
- 批处理入门手册之批处理常用DOS命令篇(md、rd、ren、move)
- SRS音频技术介绍一