web自动化学习之数据驱动

导入包 import json
字典->json

data = { 'id': 1, 
		 'name': 'Tom', 
		 'address': '北京市海淀区', 
		 'school': None
		  }
json_str = json.dumps(data)

json->字典

json_str = '{"id": 1, "name": "Tom", "address": "北京市海淀区", "school": null}' dict_data = json.loads(json_str)

json文件操作
读取json文件

import json
with open('../data/login.json','r',encoding='utf8')as f:
    data = json.load(f)
    print(type(data))
    print(data)

写入json文件

import json
'''json写入'''
data = {"name":"肘子","age":"20"}
#调入写入方法
with open('../data/data04.json','w',encoding='utf-8')as f:
    #不适用ascii码
    json.dump(data,f,ensure_ascii=False)

数据驱动例子:
目录结构:
在这里插入图片描述
base.py

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
class Base:

    #初始化
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.get("http://cal.apple886.com/")

    #找元素,返回的是元素
    def base_find(self,loc,timeout=30,poll=0.5):
        return WebDriverWait(self.driver,timeout=timeout,poll_frequency=poll).until(lambda x:x.find_element(*loc))

    #点击元素
    def base_click(self,loc):
        self.base_find(loc).click()

    #获取文本框值
    def base_get_value(self,loc):
        #获取input输入框内容,必须使用get_attribute获取
        return self.base_find(loc).get_attribute("value")

read.py

def read_txt():
    with open('../data/data','r',encoding='utf-8')as f:
        return f.readlines()

if __name__ == '__main__':
    #print(read_txt())
    arrs=[]
    for i in read_txt():o
        arrs.append(tuple(i.strip().split(',')))
    print(arrs[1::])

data

a,b,结果
1,2,3
10,0,10
123123,1,123124

init

"""计算器数据"""
from selenium.webdriver.common.by import By

#加号
calc_add = By.CSS_SELECTOR,"#simpleAdd"
#等号
calc_eq = By.CSS_SELECTOR,"#simpleEqual"
#获取计算结果
calc_result = By.CSS_SELECTOR,"#resultIpt"
#清屏
calc_clear = By.CSS_SELECTOR,"#simpleClearAllBtn"

page_calc.py

from selenium.webdriver.common.by import By
from example import page
from example.base.base import Base
class PageCalc(Base):
    #点击数字方法
    def page_click_num(self,num):
        for i in str(num):
            loc = By.CSS_SELECTOR,"#simple{}".format(i)
            self.base_click(loc)
    #点击加号
    def page_click_add(self):
        self.base_click(page.calc_add)
    #点击等号
    def page_click_eq(self):
        self.base_click(page.calc_eq)
    #获取结果
    def page_get_value(self):
        return self.base_get_value(page.calc_result)
    #清屏操作
    def page_click_clear(self):
        self.base_click(page.calc_clear)
    #组合
    def page_calc(self,num1,num2):
        self.page_click_clear()
        #数字a
        self.page_click_num(num1)
        #加号
        self.page_click_add()
        #数字b
        self.page_click_num(num2)
        #等号
        self.page_click_eq()

test_calc.py

import unittest
from example.base.read_data import read_txt
from example.page.page_calc import PageCalc
from parameterized import parameterized

def get_data():
    arrs = []
    for i in read_txt():
        arrs.append(tuple(i.strip().split(',')))
    return arrs[1::]

class TestCalc(unittest.TestCase):
    #setup
    @classmethod
    def setUpClass(cls):
        cls.calc=PageCalc()

    #setdown
    @classmethod
    def tearDownClass(cls):
        cls.calc.driver.quit()

    @parameterized.expand(get_data())
    #测试加法计算
    def test_calc(self,num1,num2,expect):
        self.calc.page_calc(num1,num2)
        #断言
        self.assertEqual(expect,self.calc.page_get_value())



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值