1. 库 库是由代码集合的一个产品 可供程序员调用。
面向对象的代码组织形成的库叫类库 面向过程的代码组织形成的库叫函数库。2. 框架 是为了解决一个或一类问题而开发的产品 用户一般只需要使用框架提供的类或函数 即可实现全部功能。
3. 工具 工具与框架类似 提供了更高层次的封装 屏蔽了底层代码 提供了单独的操作界面供用户使用。
二、自动化测试模型1. 线性测试
通过录制或编写对应用程序的操作步骤会产生相应的线性脚本 每个线性脚本想对独立 且不产生依赖与调用。
2. 模块化测试
把重复的操作单独封装成公共模块。
3. 数据驱动测试
数据的改变驱动自动化测试的执行 最终引起测试结果的改变。
4. 关键字驱动测试
又称为表驱动测试或基于动作字测试。把自动化操作封装成关键字 避免测试人员直接接触代码 多以填表格的形式降低脚本的编写难度。
三、模块化与参数化class Mail: def __init__(self, driver): self.driver driver login_frame self.driver.find_element_by_tag_name( iframe ) self.driver.switch_to.frame(login_frame) def login(self, username, password): self.driver.find_element_by_name( email ).clear() self.driver.find_element_by_name( email ).send_keys(username) self.driver.find_element_by_name( password ).clear() self.driver.find_element_by_name( password ).send_keys(password) self.driver.find_element_by_id( dologin ).click()
from selenium import webdriver from time import sleep from module import Mail driver webdriver.Chrome() driver.get( https://www.126.com ) mail Mail(driver) mail.login( , ) sleep(5) driver.quit()四、读取数据文件
1. 读取txt文件
from selenium import webdriver from time import sleep from module import Mail driver webdriver.Chrome() driver.get( https://www.126.com ) # 读取文件 以“r”的方式打开文件 with(open( ./data_file/user_info.txt , r )) as user_file: # 读取文件中的所有行 并按行返回到list data user_file.readlines() # 格式化处理 users [] for line in data: # line[:-1]去除最后一个元素“n” split()通过冒号对每行数据进行拆分 user line[:-1].split( : ) users.append(user) mail Mail(driver) mail.login(users[0][0], users[0][1]) mail.login(users[1][0], users[1][1]) mail.login(users[2][0], users[2][1]) mail.login(users[3][0], users[3][1]) sleep(2) driver.quit()
2. 读取CSV文件
import csv # python标准的模块编码和解码器 import codecs from itertools import islice # 读取本地csv文件 data csv.reader(codecs.open( ./data_file/user_info.csv , r , GBK )) # 存放用户数据 users [] # 循环输出每行信息 islice()返回一个迭代器 第一个参数表示迭代对象 第二个表示开始位置 第三个表示结束位置 for line in islice(data, 1, None): users.append(line) print(users)
3. 读取XML文件
?xml version 1.0 encoding utf-8 ? info platforms platform Windows /platform platform Linux /platform platform macOS /platform /platforms browsers browser Firefox /browser browser Chrome /browser browser Edge /browser /browsers url http://www.xxxx.com /url login username admin password 123456 / login username guest password 654321 / /info
from xml.dom.minidom import parse # 打开xml文件 dom parse( ./data_file/config.xml ) # 得到文档元素对象 root dom.documentElement # 获取 一组 标签 tag_name root.getElementsByTagName( platform ) print(tag_name[0].firstChild.data) print(tag_name[1].firstChild.data) print(tag_name[2].firstChild.data) login_info root.getElementsByTagName( login ) # 获得login标签的username属性值 username login_info[0].getAttribute( username ) print(username) # 获得login标签的password属性值 password login_info[0].getAttribute( password ) print(password) # 获得login标签的username属性值 username login_info[1].getAttribute( username ) print(username) # 获得login标签的password属性值 password login_info[1].getAttribute( password ) print(password)
4. 读取JSON文件
[
{ username : , password : },
{ username : , password : 123 },
{ username : user , password : },
{ username : error , password : error },
{ username : admin , password : admin123 }
]
import json with open( ./data_file/user_info.json , r ) as f: data f.read() user_list json.loads(data) print(user_list)



