一文从0到1手把手教学UI自动化测试之数据驱动!

2024-01-24

在UI的自动化测试中,我们需要把测试使用到的数据分离到文件中,如果单纯的写在我们的测试模块里面,不是一个好的设计,所以不管是什么类型的自动化测试,都是需要把数据分离出来的。当然分离到具体的文件里面,文件的形式其实有很多的,这里主要说明JSON的文件和YAML的文件在 UI自动化测试 中的应用。

一、JSON文件

JSON库 主要应用于序列化以及反序列化中,特别是在API的自动化测试中,序列化以及反序列化是知识体系里面必须需要掌握的技术栈的体系。当然我们也是可以针对文件进行序列话和反序列化的处理,针对文件的序列化可以简单地理解为就是把第三方的数据写到文件里面,使用JSON库里面的方法是dump()方法,那么针对文件的反对序列化可以理解为是从文件中读取数据,使用到的JSON库里面的load()的方法,下面主要是针对UI自动化测试的数据进行分离,具体代码为:

  1. import unittest

  2. from parameterized import parameterized,param

  3. from selenium import webdriver

  4. import time as t

  5. #parameterized是参数化库

  6. class AddTest(unittest.TestCase):

  7. def setUp(self) -> None:

  8. self.driver=webdriver.Chrome()

  9. self.driver.maximize_window()

  10. self.driver.implicitly_wait(30)

  11. self.driver.get('https://mail.sina.com.cn/#')

  12. def tearDown(self) -> None:

  13. self.driver.quit()

  14. @parameterized.expand([

  15. param('','','请输入邮箱名'),

  16. param('srtSA','saert','您输入的邮箱名格式不正确'),

  17. param('aserSDAsd@sina.com','asdfrty','登录名或密码错误')

  18. ])

  19. def test_sina_email(self,username,password,result):

  20. t.sleep(2)

  21. self.driver.find_element_by_id('freename').send_keys(username)

  22. t.sleep(2)

  23. self.driver.find_element_by_id('freepassword').send_keys(password)

  24. t.sleep(2)

  25. self.driver.find_element_by_link_text('登录').click()

  26. t.sleep(3)

  27. div=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')

  28. assert div.text==result

  29. if __name__ == '__main__':

  30. unittest.main(verbosity=2)

在如上的文件中可以看到,我们可以把测试的数据分离到JSON文件中,分离的数据具体为:

  1. {

  2. "data":

  3. [

  4. {"username": "","password": "","text": "请输入邮箱名"},

  5. {"username": "srtSA","password": "saert","text": "您输入的邮箱名格式不正确"},

  6. {"username": "aserSDAsd@sina.com","password": "asdfrty","text": "登录名或密码错误"}

  7. ]

  8. }

完善后的测试脚本为:

  1. import unittest

  2. from parameterized import parameterized,param

  3. from selenium import webdriver

  4. import time as t

  5. import json

  6. def readJson():

  7. return json.load(open('sina.json'))['data']

  8. class AddTest(unittest.TestCase):

  9. def setUp(self) -> None:

  10. self.driver=webdriver.Chrome()

  11. self.driver.maximize_window()

  12. self.driver.implicitly_wait(30)

  13. self.driver.get('https://mail.sina.com.cn/#')

  14. def tearDown(self) -> None:

  15. self.driver.quit()

  16. @parameterized.expand([

  17. param(readJson()[0]['username'],readJson()[0]['password'],readJson()[0]['text']),

  18. param(readJson()[1]['username'],readJson()[1]['password'],readJson()[1]['text']),

  19. param(readJson()[2]['username'],readJson()[2]['password'],readJson()[2]['text'])

  20. ])

  21. def test_sina_email(self,username,password,result):

  22. t.sleep(2)

  23. self.driver.find_element_by_id('freename').send_keys(username)

  24. t.sleep(2)

  25. self.driver.find_element_by_id('freepassword').send_keys(password)

  26. t.sleep(2)

  27. self.driver.find_element_by_link_text('登录').click()

  28. t.sleep(3)

  29. div=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')

  30. assert div.text==result

  31. if __name__ == '__main__':

  32. unittest.main(verbosity=2)

  33. 现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。

  34. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受

  35. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛

  36. 分享他们的经验,还会分享很多直播讲座和技术沙龙

  37. 可以免费学习!划重点!开源的!!!

  38. qq群号:822269834

二、YAML文件

下面我们演示把测试数据存储到YAML文件里面,分离出来的文件内容为:

  1. username: ""

  2. password: ""

  3. text: "请输入邮箱名"

  4. ---

  5. username: "srtSA"

  6. password: "saert"

  7. text: "您输入的邮箱名格式不正确"

  8. ---

  9. username: "aserSDAsd@sina.com"

  10. password: "asdfrty"

  11. text: "登录名或密码错误"

完善后的测试脚本为:

  1. import unittest

  2. from parameterized import parameterized,param

  3. from selenium import webdriver

  4. import time as t

  5. import json

  6. import yaml

  7. def readJson():

  8. return json.load(open('sina.json'))['data']

  9. def readYaml():

  10. with open('sina.yaml') as f:

  11. return list(yaml.unsafe_load_all(f))

  12. class AddTest(unittest.TestCase):

  13. def setUp(self) -> None:

  14. self.driver=webdriver.Chrome()

  15. self.driver.maximize_window()

  16. self.driver.implicitly_wait(30)

  17. self.driver.get('https://mail.sina.com.cn/#')

  18. def tearDown(self) -> None:

  19. self.driver.quit()

  20. @parameterized.expand([

  21. param(readYaml()[0]['username'],readYaml()[0]['password'],readYaml()[0]['text']),

  22. param(readYaml()[1]['username'],readYaml()[1]['password'],readYaml()[1]['text']),

  23. param(readYaml()[2]['username'],readYaml()[2]['password'],readYaml()[2]['text'])

  24. ])

  25. def test_sina_email(self,username,password,result):

  26. t.sleep(2)

  27. self.driver.find_element_by_id('freename').send_keys(username)

  28. t.sleep(2)

  29. self.driver.find_element_by_id('freepassword').send_keys(password)

  30. t.sleep(2)

  31. self.driver.find_element_by_link_text('登录').click()

  32. t.sleep(3)

  33. div=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')

  34. assert div.text==result

  35. if __name__ == '__main__':

  36. unittest.main(verbosity=2)

如上,详细的演示了在UI的自动化测试中,我们可以把使用到的测试数据分离到JSON文件和YAML的文件,这样达到了数据的分离,目的是让测试更加简单和高效。

总结:
感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文从0到1手把手教学UI自动化测试之数据驱动! 的相关文章

  • 软件测试|使用Python轻松裁剪视频

    简介 裁剪视频是在视频编辑和处理中常见的任务之一 Python提供了多种库和工具 可以用来裁剪视频 在本文中 我们将详细讨论如何使用Python来裁剪视频 并提供示例代码 步骤1 环境准备 首先 我们要安装必要的Python库 我们将使用
  • 软件测试|Selenium StaleElementReferenceException 异常分析与解决

    简介 Selenium 是一个流行的自动化测试工具 用于模拟用户与网页交互 然而 当我们在使用 Selenium 时 可能会遇到一个常见的异常 即 StaleElementReferenceException 这个异常通常在我们尝试与网页上
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 软件测试|如何使用selenium处理iframe富文本输入框

    简介 在网页开发中 富文本框是常见的元素 用于输入富文本内容 如富文本编辑器或邮件编辑器 如果我们要使用Python和Selenium进行自动化测试或操作这种富文本框 可能会遇到一些挑战 本文将详细介绍如何使用Python和Selenium
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 测开和测试平台是否有存在的必要?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 摸爬滚打多年的打工人,总结了三条职场真理,绝不假大空!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 开眼了,自动化测试还能这样用?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 软件测试中的白盒测试,这些技巧你知道吗?

    对于很多刚开始学习软件测试的小伙伴来说 如果能尽早将黑盒 白盒测试弄明白 掌握两种测试的结论和基本原理 将对自己后期的学习有较好的帮助 今天 我们就来聊聊黑盒 白盒测试的相关话题 1 黑盒测试的方法和小结 最常见黑盒测试方法包括 边界值 等
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • 甜蜜而简洁 —— 深入了解Pytest插件pytest-sugar

    在日常的软件开发中 测试是确保代码质量的关键步骤之一 然而 对于测试报告的生成和测试结果的可读性 一直以来都是开发者关注的焦点 Pytest插件 pytest sugar 以其清晰而美观的输出 为我们提供了一种愉悦的测试体验 本文将深入介绍
  • 2024拒绝行业内卷!八年软件测试20K*16薪行业心得 想入行必看

    目前工作做软件测试工作8年 属于高级测试员那个级别吧 现在看到各行各业的人都在转行学习软件测试 想给大家一些学习建议和忠告 很多粉丝都跟我说今年行情很差 找不到工资 真的找不到工作了吗 我们常在网上看到的 程序员饱和 程序员过剩 其实一般是
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • 程序员找工作难!拿到外包公司的 offer 我应该去么?

    引言 前一阵子有一个帖子引起了非常广泛的讨论 描述的就是一个公司的外包工作人员 加班的时候因为吃了公司给员工准备的零食 被公司的HR当场批评 这个帖子一发出来 让现在测试行业日益新增的外包公司备受关注 那么外包公司和非外包公司有什么样的不一
  • 软件测试/测试开发/全日制/测试管理丨Android WebView 技术原理

    Android WebView是一个内置的组件 允许在Android应用中嵌套显示Web内容 Android WebView的技术原理涉及到使用WebKit引擎来渲染Web内容 并提供一系列API和回调函数 使得开发人员可以控制和定制Web
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到9月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分

随机推荐