数据驱动和关键字驱动简单例子

发表于:2020-8-05 10:23

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

 作者:测试小子    来源:博客园

分享:
  数据驱动和关键字驱动简单例子(登录)
  数据驱动:程序和数据分离,测试数据存入一个文件中,脚本存入另一个文件中
  公司项目为保密项目,地址使用xxx代替
  数据文件:D:\\test\\loginData.txt
  文件内容:
  admin_cyl||123456a
  admin_test||a123456
  test_shi||a123456
  代码:
   #encoding=utf-8
  import unittest
  from selenium import webdriver
  import time
  class VisitClosePlaceByIe(unittest.TestCase):
  def setUp(self):
  #启动Ie浏览器
  self.driver = webdriver.Ie(executable_path = "D:\\IEDriverServer")
  def test_visitURL(self):
  with open("D:\\test\\loginData.txt") as fp:
  for line in fp:
  username,password = line.split("||")
  password = password.strip().decode("gbk")
  self.driver.get("xxx")
  self.driver.find_element_by_id("username")
  self.driver.find_element_by_id("username").send_keys(username)
  self.driver.find_element_by_id("password")
  self.driver.find_element_by_id("password").send_keys(password)
  self.driver.find_element_by_id("button")
  self.driver.find_element_by_id("button").click()
  time.sleep(3) #不加等待时间,则page_source获取的是登录页面的源代码
  assert u"封闭学校管理平台" in self.driver.page_source ,"Keyword not in page"
  def tearDown(self):
  self.driver.quit()
  关键字驱动:将测试用例的执行步骤存放在文件中,每个步骤单独封闭成一个函数,以这个函数名作为关键字,将函数名及传参写入文件中,第个步骤对应一行文件
  数据文件:D:\\test\\schoolLogin.txt
  文件内容:
  visitUrl||["xxx"]
  find_ele||["username","admin_cyl"]
  find_ele||["password","123456a"]
  click_login||["button"]
  assert_word||[u"封闭学校管理平台"]
  代码:
   school_login.py
  #encoding=utf-8
  import unittest
  from selenium import webdriver
  import time
  class VisitSchool(unittest.TestCase):
  def setUp(self):
  #启动IE浏览器
  self.driver = webdriver.Ie(executable_path="D:\\IEDriverServer")
  def visitUrl(self,url):
  #由于参数个数不一致,所以使用列表做为参数,再用eval将列表字符串转化为列表
  url = eval(url)
  #打开网页
  self.driver.get(url[0])
  def find_ele(self,arg):
  arg = eval(arg)
  #定位输入框并输入值
  self.driver.find_element_by_id(arg[0]).send_keys(arg[1])
  #本来想用两个函数,一个定位,一个输入值,但是输入函数中无法使用定位,所以合并成一个函数
  def click_login(self,id):
  id = eval(id)
  #定位按钮并点击
  self.driver.find_element_by_id(id[0]).click()
  def assert_word(self,keyword):
  #等待3秒,以便页面加载,否则page_source是登录页面的
  time.sleep(3)
  keyword = eval(keyword)
  #断言
  assert keyword[0].strip() in self.driver.page_source, "Keyword not in page"
  def test_schoolLogin(self):
  with open("D:\\test\\schoolLogin.txt") as fp:
  for line in fp:
  action,data = line.split("||")
  action = action.strip()
  data = data.decode("gbk").strip()
  #拼接执行命令
  exec("self."+action+"(u'"+data+"')")
  def tearDown(self):
  self.driver.quit()
  if __name__ == "__main__":
  unittest.main()
   
      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号