IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 数据驱动测试ddt -> 正文阅读

[Python知识库]数据驱动测试ddt

目录

for循环读取数据

ddt数据驱动方式:


本文主要对比一下当导入数据的时候采用for循环和采用数据驱动ddt的不同。

for循环读取数据

代码如下:

import unittest2
from selenium.webdriver.common.by import By
from func.csvFileManager2 import reader
from test_case.BaseTestCase import BaseTestCase


class Register2Test(BaseTestCase):
    def test_register(self):
        table = reader("register_test_cases.csv")
        for row in table:
            self.driver.get("http://localhost/index.php?m=user&c=public&a=reg")
            self.driver.find_element(By.NAME, "username").send_keys(row[0])
            self.driver.find_element(By.NAME, "password").send_keys(row[1])
            self.driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
            self.driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
            self.driver.find_element(By.NAME, "email").send_keys(row[4])
            

缺点:用for循环的方式,当其中任何一条测试用例执行失败,后续的测试数据将不被执行,所以需要采用ddt数据驱动方式。

ddt数据驱动方式:

基本流程:

  1. 导入代码库ddt
  2. 调用读取csv文件的方法
  3. 在类的上面加装饰器@ddt.ddt 表示当前类是一个数据驱动测试的类
  4. 在方法上面加装饰器@ddt.data() 用来指定测试数据源,要求数据源的格式是多个参数

代码如下:

import ddt
import unittest2
from selenium.webdriver.common.by import By
from func.csvFileManager2 import reader
from test_case.BaseTestCase import BaseTestCase

@ddt.ddt
class Register3Test(BaseTestCase):
    table = reader("register_test_cases.csv")

    @ddt.data(*table)
    def test_register(self, row):
        self.driver.get("http://localhost/index.php?m=user&c=public&a=reg")
        self.driver.find_element(By.NAME, "username").send_keys(row[0])
        self.driver.find_element(By.NAME, "password").send_keys(row[1])
        self.driver.find_element(By.NAME, "userpassword2").send_keys(row[2])
        self.driver.find_element(By.NAME, "mobile_phone").send_keys(row[3])
        self.driver.find_element(By.NAME, "email").send_keys(row[4])


if __name__ == '__main__':
    unittest2.main()
  1. ?因为table是一个列表所以在前面加上*号。
  2. 列表前面加星号的作用:举例 list=[1,2,3,4]
    1. print(list) --> [1,2,3,4]
    2. print(*list) --> 1,2,3,4
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:09:59  更:2022-02-03 01:12:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:25:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码