seldom之数据驱动

发表于:2020-4-07 11:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:虫师    来源:测试圈TC

#
seldom
分享:
  如果自动化某个功能,测试数据不一样而操作步骤是一样的,那么就可以使用参数化来节省测试代码。
  seldom是我在维护一个Web UI自动化测试框,这里跟大家分享seldom参数化的实现。
  GitHub:https://github.com/SeldomQA/seldom
  参数化测试用例
  先看一下sedom实现参数化的例子。
   import seldom
  from seldom import data
  class BaiduTest(seldom.TestCase):
  @data([
  ("case1", "seldom"),
  ("case2", "selenium"),
  ("case3", "unittest"),
  ])
  def test_baidu(self, name, keyword):
  """
  参数化测试用例
  :param name: 用例名称
  :param keyword: 搜索关键字
  """
  self.open("https://www.baidu.com")
  self.type(id_="kw", text=keyword)
  self.click(css="#su")
  self.assertTitle(keyword+"_百度搜索")
  if __name__ == '__main__':
  seldom.main()
  通过@data() 装饰器来参数化测试用例,用法非常简单。
  将测试数据写代码里面并不是特别优雅的方式,尤其在数据比较多长时间。那么通过数据文件管理可能会更加优雅。
  读取csv文件
  seldom支持csv文件的数据解析为 list。
  读取CSV文件中的数据。
   import seldom
  from seldom import data
  from seldom import csv_to_list
  class YouTest(seldom.TestCase):
  @data(csv_to_list(file="data.csv", line=2))
  def test_login(self, username, password):
  """a simple test case """
  self.open("https://login.xxx.com")
  self.type(id_="user", text=username)
  self.type(id_="pawd", text=password)
  # ...
  csv_to_list() 方法CSV文件内容转化为list。
  file: 指定csv测试文件。
  line: 指定从第几行开始读取,默认第一行。
  CSV文件不支持多个Sheet,这就要求一个组数据必须创建一个单独JSON文件,如果数据多了之后就需要创建许多单独的JSON文件,这就不太方便了。
  读取excel文件
  seldom支持excel文件的数据解析为list。
  Excel文件可以创建多个Sheet标签,通过不同的标签管理数据。
   import seldom
  from seldom import data
  from seldom import excel_to_list
  class YouTest(seldom.TestCase):
  @data(excel_to_list(file="data.xlsx", sheet="login", line=2))
  def test_login(self, username, password):
  """test login"""
  self.open("https://login.xxx.com")
  self.type(id_="user", text=username)
  self.type(id_="pawd", text=password)
  @data(csv_to_list(file="data.xlsx", sheet="search", line=2))
  def test_search(self, keyword):
  """test search """
  self.open("https://www.baidu.com")
  self.type(id_="kw", text=keyword)
  excel_to_list() 方法excel文件数据转化为list。
  file : 指定excel文件的路径。
  sheet: 指定excel的标签页,默认名称为 Sheet1。
  line : 指定从第几行开始读取,默认第一行。
  读取JSON文件
  seldom支持将JSON文件的数据解析为 list/dict。
  json 文件:
   {
  "search":[
  ["python"],
  ["seldom"],
  ["unittest"]
  ],
  "login":  [
  ["admin", "admin123"],
  ["guest", "guest123"]
  ]
  }
  一个JSON文件里面同样可以表示不同格式的的文件。
   import seldom
  from seldom import data
  from seldom import json_to_list
  class YouTest(seldom.TestCase):
  @data(json_to_list(file="data.json", key="login"))
  def test_login(self, username, password):
  """test login """
  self.open("https://login.xxx.com")
  self.type(id_="user", text=username)
  self.type(id_="pawd", text=password)
  @data(csv_to_list(file="data.json", key="search"))
  def test_search(self, keyword):
  """test search """
  self.open("https://www.baidu.com")
  self.type(id_="kw", text=keyword)
  json_to_list() 方法JSON文件数据转化为list/dict。
  file : 指定JSON文件的路径。
  key: 指定字典的key,默认不指定解析整个JSON文件。
  使用第三方ddt
  seldom也支持第三方ddt库。
  GitHub:https://github.com/datadriventests/ddt
  安装:
 > pip install ddt
  创建测试文件test_data.json:
   {
  "test_data_1": {
  "word": "seldom"
  },
  "test_data_2": {
  "word": "unittest"
  },
  "test_data_3": {
  "word": "selenium"
  }
  }
  在 seldom 使用ddt。
   import seldom
  from ddt import ddt, file_data
  @ddt
  class YouTest(seldom.TestCase):
  @file_data("test_data.json")
  def test_case(self, word):
  """a simple test case """
  self.open("https://www.baidu.com")
  self.type(id_="kw", text=word)
  self.click(css="#su")
  self.assertTitle(word + "_百度搜索")
  if __name__ == '__main__':
  seldom.main()
  

     本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号