参考链接: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相关推荐

  1. web自动化测试框架搭建(python+selenium+pytest+pom+ddt)

    本篇文件利用当下流行的pom设计模式设置测试框架,编写测试用例,生成测试报告,并最终jenkins集成. 一.selenium selenium是一个开源的web ui自动化测试工具,详细就不再过多介 ...

  2. 【python做接口测试的学习记录day10——pytest自动化测试框架之接口加密】

    通常出于安全性考虑,开发会对接口参数进行加密,加密方式有很多种,例如MD5.Base64.RSA双密钥加密方式等,下面我们以MD5加密方式的登录接口为例,此接口对密码进行了加密,如果测试时直接使用未加 ...

  3. 三天学会Selenium,阿里p7精心整理自动化测试Selenium大礼包

    大家都知道Selenium很好用,Selenium作为一个 Web 应用程序自动化测试工具,Selenium 可以直接驱动浏览器,模拟真正的用户操作,解决回归测试和多浏览器兼容性测试问题:而且跟 Py ...

  4. js修改id的值_如何修改pytesthtml源码来优化接口自动化测试报告

    你这么优秀,一定只想把"柠檬班"置顶 ▲ 前言 大家好,我是柠檬班Python6期的学员小翟. 以前常用unittest做接口自动化测试,后来想获取单个接口的响应时间,便采用pyt ...

  5. 自动化测试-数据驱动

    一.简介 数据驱动:是以数据来驱动整个测试用例的执行,也就是测试数据决定测试结果.比如我们要测试加法,我们的测试数据是1和1,测试结果就是2,如果测试数据是1和2,测试结果就是3. 二.特点 1.数据 ...

  6. selenium之使用xlrd模块读取ecel文件,使用pytest参数化实现DDT

    1.调用xlrd:import xlrd 2.使用xlrd模块调用excel表格 3.结合pytest参数化格式处理方式来实现DDT 首先创建个excel表格: 代码: import pytest i ...

  7. python+requests+pytest+allure+yaml+DDT+logs 接口自动化框架使用手册

    一.单条测试用例 无ddt数据驱动的场景 1 config.yaml 中书写基础路径 2 在redloads模块中,新建一个demo_fun.py文件, 其中demo要用的方法写在其中 如:读取con ...

  8. 软件测试培训教程:pytest与unittest区别

    在软件测试培训教程中,会讲到关于pytest与unittest区别,那么本期教程小编就为大家详细的介绍一下pytest与unittest区别有哪些? pytest与unittest区别: 一.用例编写 ...

  9. [转]Python测试框架对比----unittest, pytest, nose, robot framework对比

    测试框架 什么是框架? 框架(Framework)是整个或部分系统的可重用设计, 框架是用来解决代码的组织及运行控制问题的. 在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求, ...

最新文章

  1. linux内核网络协议栈--接收流程及函数(九)
  2. springboot @ConfigurationProperties注入属性流程
  3. JUnit测试方法订购
  4. linux caffe ssd安装错误,ubuntu16.04安装caffe以及各种问题汇总
  5. zero-shot learning
  6. 170824、storm 环境搭建
  7. 如何设置PDFjs 页面标题
  8. html5建站模板怎么用,怎么用模板建网站
  9. 苹果12可以双开微信吗 iPhone 12双开微信教程「iphone技巧」
  10. html input限制输入小数,限制input输入小数只能到3位或者只能输入正整数(兼容ios)...
  11. 疫情重压下,屈臣氏为何上半年仍盈利?
  12. 辟邪剑法之字符串常用API
  13. 如何判断一个单链表是否有环?
  14. 跨专业考研应该怎么做?
  15. Interconnection
  16. 史上最详细Mysql免安装版教程
  17. python基础: os.path.realpath()、os.path.getcwd()、 os.path.abspath() 的区别
  18. chrome谷歌浏览器:您使用的是不受支持的命令行标记:--extensions-on-chrome-urls
  19. 批处理入门手册之批处理常用DOS命令篇(md、rd、ren、move)
  20. SRS音频技术介绍一

热门文章

  1. 篮球服务器维修,永劫无间服务器,瘫痪6小时未恢复惹众怒,法神:最少十个箱子摆平...
  2. spring定时器@Scheduled的原理和实现分析
  3. UDS诊断系列介绍07-2E服务
  4. css grid布局实现水平垂直居中 文字水平垂直居中
  5. sidirect 连接西门子_如何配置DASSIDirect与西门子
  6. 我想到一种办法可以穿越到过去
  7. css实现图片全屏铺满自适应的三种方法
  8. 关于点到直线距离的理解
  9. latex的恒等于怎么写?
  10. 安装redhat linux 7 64位