使用“数据驱动测试”之前应该知道的事儿


什么是数据驱动测试

  从它的定义来看,就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。说的直白些,就是参数化的应用。

  “他们”认为数据驱动什么样子?

  这里以csv文件为例,大多文章也是选用的csv/excel文件。

  参数、断言、结果都有了,大概就这样子吧?

  接下来需要将数据读取出来。

  # coding=utf-8

  import csv

  import codecs

  from itertools import islice

  # 读取本地 CSV 文件

  data = csv.reader(codecs.open('user_info.csv', 'r', 'utf_8_sig'))

  # 用户存放用户数据

  users = []

  # 循环输出每一行信息

  for line in islice(data, 1, None):

      users.append(line)

  # 打印

  print(users)

  得到结果:

  [['', '123', '请输入帐号', ''],

  ['user', '', '请输入密码', ''],

  ['error', 'error', '帐号或密码错误',''],

  ['admin', 'admin123', 'admin你好', ''],

  ['guest', 'guest123', 'guest你好', '']]

  这里得到一个测试数据的二维数组。

  那么接下来要用这些数据做自动化测试了?被测试功能如下:

  测试代码如下:

  # 测试登陆功能

  from selenium import webdriver

  from time import sleep

  driver = webdriver.Chrome()

  for user in users:

      driver.get("http://127.0.0.1:8000/")

      driver.find_element_by_id("inputUsername").send_keys(user[0])

      driver.find_element_by_id("inputPassword").send_keys(user[1])

      driver.find_element_by_id("Login").click()

      sleep(2)    

      tips = driver.find_element_by_id("tips").text

      print(tips)

      print(user[2])

      try:

          assert tips == user[2]

      except AssertionError as msg:

          print(msg)

          user[3] = "Faile"

      else:

          user[3] = "Pass"

  driver.quit()

  # 打印结果

  print(users)

  运行之后的测试结果:

  [['', '123', '请输入帐号', 'Pass'],

  ['user', '', '请输入密码', 'Pass'],

  ['error', 'error', '帐号或密码错误','Pass'],

  ['admin', 'admin123', 'admin你好', 'Faile'],

  ['guest', 'guest123', 'guest你好', 'Faile']]

  看,结果已经写到最后一列了。

  最后,我们还需要将测试结果写回到csv文件中。

  # 读取本地 CSV 文件

  csv_file = csv.writer(codecs.open('user_info.csv', 'w','utf_8_sig'), 

                                    dialect="excel")

  # 写入标题

  csv_file.writerow(['用户名','密码','断言','结果'])

  # 循环写入数据

  for user in users:

      csv_file.writerow(user)

  # 打印

  print(users)

  打开CSV文件,结果如下:

  看结果一列,是不是已经有了结果。

  那么,下来思考几个问题。

  1、测试结果是否太过简单了,只有“Pass”和“Faile”,没有任何失败的日志,是否需要另起一列记录失败日志?

  2、如何统计出总失败的用例数和成功的用例数?

  3、如果想单独验证失败的两条用例应该怎么做?例如上图中的最后两条失败的用例。

  4、上面的测试代码中,有多少是真正用在测试操作的,至少一半都在读写csv文件,是否需要做封装,想想怎么封装更简单?

  5、在获取具体读取数据的时候,我们使用的是user[0]、user[1]、user[2],你真的容易分辨这些数据么?如果又加了一列数据呢?不改代码是不是就对不上号了。

  6、这只是一组登录数据。我们知道不同的功能,所需要的数据是不一样的,比如搜索,只需要“搜索关键字”, 例如注册,需要“邮箱”、“密码”、“重复密码”、“昵称”等。我们一个系统有N多功能的好吧!

  7、如第6条,这些测试数据要怎么放,放在一个csv文件还是多个文件?怎么统计测试结果?

  所以,知道读取数据文件有多坑了吧!?谁说的方便维护?你一定没用这种方式写过真正的项目吧!一直处在跟着别人写demo阶段。如果你有更“高大上”的处理方式欢迎请告诉我,谢谢!


行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值