web自动化测试学习七-数据驱动测试

通过ddt 执行数据驱动测试

1.主要用途:

   相同的测试脚本使用不同的测试数据来执行,将测试数据和测试行为完全分离,减少代码冗余。

2.ddt用法

(1) 在测试类 TestDemo 前声明使用 ddt (@ddt.ddt)

(2) 在测试方法前使用@ddt.data()添加该测试方法需要得测试数据,@ddt.data接受一个可迭代的类型,以此来判断需要执行的次数。                                                                                

(3) 最后使用@unpack 进行修饰,也就是在测试方法被调用过程中,对测试数据进行解包,将每组测试数据中的第一个数据传给 testdata 形参,将每组测试数据中的第二个测试数据传给 expectdata 形参。  

3.实践

  先创建一个csv文件,内容如下,内容大意是:作品----相关人物的关系

  coding吧:对代码中测试类中参数进行介绍,是根据rows来进行映射得到的,具体理解请看代码

     testdata数据:神奇动物在哪里,疯狂动物城,大话西游之月光宝盒

     expectdata数据:叶茨,古德温,周星驰

本代码主要目的:控制浏览器打开百度,在百度框搜索框中输入:testdata,然后在得到的页面结果中查找是否有expectdata的数据

#-*-coding:GBK -*-
import csv

from selenium import webdriver
import unittest
from time import  sleep
import ddt


def get_csvdata(file_name): #读取csv文件,将每行数据存储到rows这个列表中
    rows=[]
    data_file=open(file_name,"r")
    reader=csv.reader(data_file)
    for row in reader:
        rows.append(row)
    return rows

@ddt.ddt
class TestDemo(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        self.driver=webdriver.Firefox()

    @ddt.data(*get_csvdata("testdata.csv"))#读取rows中的数据,
    @ddt.unpack #将列表中,每一个数据,来进行实参与形参的映射。
    def test_data(self,testdata,expectdata): #这是一个测试函数。访问百度首页,这里用了webdriver.
         url="https://www.baidu.com"
         self.driver.get(url)
         self.driver.implicitly_wait(10)
         try:
             self.driver.find_element_by_id("kw").send_keys(testdata)
             self.driver.find_element_by_id("su").click()
             sleep(3)
             self.assertTrue(expectdata in self.driver.page_source)
         except Exception as msg:
              print(msg,testdata,expectdata)

    @classmethod
    def tearDownClass(self):
         self.driver.quit()

if __name__=='__main__':
    unittest.main()

效果

程序会根据从rows中获取的数据一行行执行。我这个csv中三行数据,所以就执行3次

 

---

------------------好久之前就该总结的了,一直没时间,现在简单记录一下。----------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值