自动化测试模型

一、基本概念

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值