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

这篇具有很好参考价值的文章主要介绍了一文从0到1手把手教学UI自动化测试之数据驱动!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一文从0到1手把手教学UI自动化测试之数据驱动!,安全测试,自动化测试,软件测试,ui,python,压力测试,测试工具,功能测试,软件测试,自动化测试

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

一、JSON文件

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

import unittest
from parameterized import  parameterized,param
from selenium  import  webdriver
import  time as t

#parameterized是参数化库

class AddTest(unittest.TestCase):

    def setUp(self) -> None:
        self.driver=webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.implicitly_wait(30)
        self.driver.get('https://mail.sina.com.cn/#')

    def tearDown(self) -> None:
        self.driver.quit()


    @parameterized.expand([
        param('','','请输入邮箱名'),
        param('srtSA','saert','您输入的邮箱名格式不正确'),
        param('aserSDAsd@sina.com','asdfrty','登录名或密码错误')
    ])
    def test_sina_email(self,username,password,result):
        t.sleep(2)
        self.driver.find_element_by_id('freename').send_keys(username)
        t.sleep(2)
        self.driver.find_element_by_id('freepassword').send_keys(password)
        t.sleep(2)
        self.driver.find_element_by_link_text('登录').click()
        t.sleep(3)
        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]')
        assert div.text==result

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

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

{
  "data":
  [
    {"username": "","password": "","text": "请输入邮箱名"},
    {"username": "srtSA","password": "saert","text": "您输入的邮箱名格式不正确"},
    {"username": "aserSDAsd@sina.com","password": "asdfrty","text": "登录名或密码错误"}
  ]
}

完善后的测试脚本为:

import unittest
from parameterized import  parameterized,param
from selenium  import  webdriver
import  time as t
import  json

def readJson():
   return json.load(open('sina.json'))['data']

class AddTest(unittest.TestCase):

   def setUp(self) -> None:
      self.driver=webdriver.Chrome()
      self.driver.maximize_window()
      self.driver.implicitly_wait(30)
      self.driver.get('https://mail.sina.com.cn/#')

   def tearDown(self) -> None:
      self.driver.quit()


   @parameterized.expand([
      param(readJson()[0]['username'],readJson()[0]['password'],readJson()[0]['text']),
      param(readJson()[1]['username'],readJson()[1]['password'],readJson()[1]['text']),
      param(readJson()[2]['username'],readJson()[2]['password'],readJson()[2]['text'])
   ])
   def test_sina_email(self,username,password,result):
      t.sleep(2)
      self.driver.find_element_by_id('freename').send_keys(username)
      t.sleep(2)
      self.driver.find_element_by_id('freepassword').send_keys(password)
      t.sleep(2)
      self.driver.find_element_by_link_text('登录').click()
      t.sleep(3)
      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]')
      assert div.text==result


if __name__ == '__main__':
   unittest.main(verbosity=2)
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

一文从0到1手把手教学UI自动化测试之数据驱动!,安全测试,自动化测试,软件测试,ui,python,压力测试,测试工具,功能测试,软件测试,自动化测试

二、YAML文件

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

username: ""
password: ""
text: "请输入邮箱名"

---
username: "srtSA"
password: "saert"
text: "您输入的邮箱名格式不正确"

---
username: "aserSDAsd@sina.com"
password: "asdfrty"
text: "登录名或密码错误"

完善后的测试脚本为:

import unittest
from parameterized import  parameterized,param
from selenium  import  webdriver
import  time as t
import  json
import yaml

def readJson():
   return json.load(open('sina.json'))['data']


def readYaml():
   with open('sina.yaml') as f:
      return list(yaml.unsafe_load_all(f))

class AddTest(unittest.TestCase):

   def setUp(self) -> None:
      self.driver=webdriver.Chrome()
      self.driver.maximize_window()
      self.driver.implicitly_wait(30)
      self.driver.get('https://mail.sina.com.cn/#')

   def tearDown(self) -> None:
      self.driver.quit()


   @parameterized.expand([
      param(readYaml()[0]['username'],readYaml()[0]['password'],readYaml()[0]['text']),
      param(readYaml()[1]['username'],readYaml()[1]['password'],readYaml()[1]['text']),
      param(readYaml()[2]['username'],readYaml()[2]['password'],readYaml()[2]['text'])
   ])
   def test_sina_email(self,username,password,result):
      t.sleep(2)
      self.driver.find_element_by_id('freename').send_keys(username)
      t.sleep(2)
      self.driver.find_element_by_id('freepassword').send_keys(password)
      t.sleep(2)
      self.driver.find_element_by_link_text('登录').click()
      t.sleep(3)
      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]')
      assert div.text==result


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

如上,详细的演示了在UI的自动化测试中,我们可以把使用到的测试数据分离到JSON文件和YAML的文件,这样达到了数据的分离,目的是让测试更加简单和高效。文章来源地址https://www.toymoban.com/news/detail-737208.html

 END今天的分享就到此结束了~!点赞关注不迷路

到了这里,关于一文从0到1手把手教学UI自动化测试之数据驱动!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教学RRT*(RRTSTAR)三维算法MATLAB仿真(代码可直接运行,视频手把手教学)

            在我以前的作品里有关于RRT算法的视频和代码,今天主要讲解一下RRT*算法的原理。RRT*算法主要是在RRT算法的基础上加上了重写父节点和随机重连的两个步骤。具体的实现方式我想以视频的方式向大家讲解,个人感觉讲解的十分详细。视频连接在这里,希望大家看

    2024年04月17日
    浏览(45)
  • tps5430手把手教学

    TPS5430手把手教学 目录 一、buck电路原理 二、tps5430芯片介绍 1.1芯片引脚图 1.2芯片引脚说明 三、tps5430参考电路讲解以及PCB布局 1.正压降压(15V转12V) 1.1原理图 1.2器件选择 1.3PCB布局 2.正压降负压 2.1原理图 2.2PCB布局 2.3注意事项 BUCK电路原理: BUCK电路,又称降压式变换电路,

    2023年04月20日
    浏览(54)
  • ChatGPT推广指南,手把手教学

    网站登录流程我就不给大家赘述了,直接进入主题,全程干货仔细看 1.个人中心。点击右上角——“头像”——点击“个人中心” 2.推广链接。点击左侧菜单栏——“推广链接”,三条默认推广链接就是您的推广链接,将您的专属推广链接分享给需要的人即可。 3.好友列表。

    2023年04月12日
    浏览(36)
  • Git入门指南(手把手教学)

    Git是一种分布式版本控制系统,它是由Linus Torvalds为了管理Linux内核开发而开发的。与中心化的版本控制系统(如SVN)不同,Git是一种分布式系统,它将代码库(repository)复制到多个开发者的本地计算机上,每个开发者都有自己的代码库,可以在本地提交代码、管理分支、合

    2023年04月14日
    浏览(48)
  • 【Kafka】手把手SASL,SSL教学

    Kafka支持以下SASL机制:GSSAPI 、PLAIN、 SCRAM-SHA-256、 SCRAM-SHA-512、 OAUTHBEARER。 本指南主要以SCRAM机制配置为主。 当使用SCRAM机制时,Kafka使用Zookeeper存储用户加密后的凭证,所以需要先使用Kafka提供的脚本进行用户的创建。 比如创建用户名为kafkaAdmin,密码为admin用户的操作命令如

    2024年01月17日
    浏览(39)
  • 手把手教学搭建ntp服务器

    目录 一 配置服务端(172.17.0.214) 第一步 查看当前时区和时间  第二步 安装ntp服务端 第三步 查看ntp服务状态:systemctl status ntpd 第四步 编辑ntp配置 第5步 启动ntp  第六步 设置开机自启 第七步 查看配置: ntpq -p 二 配置客户端 (172.17.0.215/216) 第一步 安装ntp:yum install ntp n

    2024年02月06日
    浏览(57)
  • 手把手搭建KVM云平台(详细教学)

    1.点击“文件”,选择“新建虚拟机”。 2.选择“自定义(高级)”,点击“下一步”。 3.硬件兼容性选择“Workstation 16.x”,点击“下一步”。 4.选择“稍后安装操作系统”,点击“下一步”。 5.操作系统选择“Linux(L)”,版本选择“CentOS 7 64位”,点击“下一步”。 6. 自

    2024年02月02日
    浏览(48)
  • Kaggle 新手入门必看,手把手教学

    Add Data 的路径:/kaggle/input git clone 的路径:/kaggle/working 1.进入官网 Kaggle 点击 Register 进行账号注册 2.随便点一个方式注册,本人用的邮箱 3.点进去填写对应信息进行注册,点击 next 即可 1.如果你看到是这个界面 2.如果你看到的是这个界面 Kaggle 新建 kernel 有两种方式,这个主要

    2024年01月25日
    浏览(41)
  • Docker容器部署前端Vue服务——手把手教学

    需要工具: Xftp Xshell   首先对前端项目进行打包:npm run build   打包完成 ​ 在项目中生成dist文件: 通过Xshell在/home目录下创建项目文件夹 通过Xftp将打包的dist文件上传到服务器的项目文件夹下; 利用Xshell在拉取nginx镜像 在项目文件夹下编写nginx config配置文件 default.conf内容

    2024年02月07日
    浏览(57)
  • 基于FPGA:多目标运动检测(手把手教学①)

          在3月份发表了基于FPGA:运动目标检测(原理图+源码+硬件选择,可用毕设)后反应很强,很多同学表示,希望我们能 在运动目标检测的基础上 , 做多目标运动检测。 最近跟其他两个工程师刚好有空,就把就版本的工程 做了一次超大升级。       本次工程,花了

    2023年04月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包