9.数据驱动

数据驱动

  1. 通过测试数据控制用例的执行,直接影响测试结果
  2. 数据驱动 最好结合 PO+参数化 技术使用

数据驱动的优点:将维护关注点放到测试数上, 而不去关注测试脚本代码

json

  1. 一种纯文本格式,后缀.json
  2. 一种轻量级数据交换格式:接口数据传递基本使用json 格式
  3. 由键值对组成,和 python 的字典格式一样,不同之处在于 json 是文本格式
  4. json 语法: 花括号包含键值对,键与值之间使用 冒号 分割 ,键值对之间使用 逗号分割

json 和 字典之间的转换

字典转为 json 字符串

  1. dumps()
  2. 操作: 导包 ,调用dumps 方法, 打印类型
  3. 注意 是 dumps

json 字符串转换为 字典

loads

计算机案例base实现

使用get_attribute()方法获取指定的元素属性值

import time
from selenium.webdriver.support.wait import WebDriverWait


class Base:
    # 初始化方法
    def __init__(self, driver):
        self.driver = driver

    # 查找元素
    def base_find_element(self, loc, timeout=30, poll=0.5):
        """
        :param loc:  元素的定位信息,格式为元祖
        :param timeout: 默认超时时间30秒
        :param poll: 访问频率,默认0.5查找一次元素
        :return: 返回查找到的元素
        """
        # 显示等待
        return WebDriverWait(self.driver,
                             timeout=timeout,
                             poll_frequency=poll).until(lambda x: x.find_element(*loc))

    # 点击
    def base_click(self, loc):
        # 调用查找元素 并 进行点击
        self.base_find_element(loc).click()

    # 获取value属性方法封装
    def base_get_value(self, loc):
        # 使用get_attribute()方法获取指定的元素属性值
        # 注意:返回
        return self.base_find_element(loc).get_attribute("value")

    # 截图
    def base_get_img(self):
        self.driver.get_screenshot_as_file("../image/{}.png".format(time.strftime("%Y_%m_%d %H_%M_%S")))

1.4 JSON介绍
	1. 一种纯文本格式,后缀.json ;
	2. 一种轻量级数据交换格式;(接口数据传递基本使用json格式)
	3. 由键值对组成,和python的字典格式一模一样,不同之处在于(json是文本格式)
	4. json语法:花括号包含键值对,键与值之间使用冒号(:)分隔, 键值对之间使用逗号(,)分隔;
	
1.5 json与字典转换
	1). 字典转为json字符串
		方法:dumps() 
		操作:
			1. 导包
			2. 调用dumps方法
			3. 打印类型
		注意:
			使用dumps方法,而不是dump方法;
	2) json字符串转字典
		方法: loads()
		操作: 
			1. 导包
			2. 调用loads方法
			3. 打印类型
		注意:
			1. 使用loads方法而不是load方法
			2. 字符串中的键名必须使用双引号;
1.6 json的写与读
	1). 写入json
		方法:dump(写什么文件, 往那写)
		操作: 
			1. 导包
			2. 获取文件流f,并调用dump方法写入
		注意:
			1. 写入时模式 w
			2. 写入的方法 dump() 而不是 dumps()
			
	2). 读取json 【重点】
		方法:load()
		操作:
			1. 导包
			2. 获取文件流f,并调用load方法读取
		注意:
			1. 写入时模式 r
			2. 写入的方法 load() 而不是 loads()

二、练习计算器
结构:
base
# 初始化方法
# 查找元素
# 点击
# 获取value属性方法封装
# 截图
page
# 点击数字
for n in num:
loc = By.ID, ““simple{}”.format(n)”
# 调用baes内点击方法

		# 点击加号
		# 点击等号
		# 获取结果
		# 组装业务方法
	scripts
		# 初始化方法
			# 获取计算页面页面对象
			# 获取driver
			
		# 结束方法
			# 关闭driver
		# 测试加法方法
			# 调用加法运算业务方法
			# 断言
			# 截图
drvier封装
	类名
		# 定义类变量
		driver = None
		
		@classmethod
		# 获取driver方法
			如果 cls.driver is None:
				# 获取浏览器驱动对象
				# 最大化
				# 打开url 注:url建议写入配置文件中
			返回 cls.driver
		@classm3thod
		# 关闭driver方法
			如果 cls.driver:
				cls.driver.quit()
				# 注意此处一定要置空
				cls.driver = None
				
读取json数据封装
	1. 读取工具封装
		# 导包
		# 打开json获取文件流 并 调用load方法
		
	2. 组装读取出来数据格式封装
		预期格式:[(),()]
		默认实际格式:{"":"","":""}
		思路:
			1. 新建空列表
			2. 使用字典.values()方法获取所有的字典值;
			3. 使用列表的.append((字典.get("键名")))
			4. 返回 arrs
	
	
查找元素判断是否操作成功 思路封装
	def base_if_success():
		try:
			self.base_find_element(loc, timeout=2)
			return True
		except:
			return False
			
如何区分正向逆向用例
	思路:在测试数据中添加一一个标识正向用例或逆向用例的标记: 如:True/False
	步骤:
		1. 调用登录方法(此登录方法中,只有输入用户名、输入密码、输入验证码、点击登录按钮) 切记:不要封装点击登录连接地址;
		2. 判断是否正向用例:
				# 判断安全退出是否存在
				# 点击安全退出
				# 点击登录连接地址
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值