自动化测试之六:自动化测试模型

1 自动化测试模型

自动化测试模型可分为:线性测试,模块化与类库,数据驱动测试,关键字驱动测试。

1.1 线性测试:

    通过录制或编写对应用程序的操作步骤会产生相应的线性脚本,每个线性脚本相对独立,并不产生依赖与调用,即单纯的模拟用户完整的操作场景,在前面几章提到的例子都属于线性测试。

1.2 模块化与类库

    线性测试是不容易维护的,因此新的自动化测试模型出现了,做法很简单,借鉴了编程语言中的模块化思想,把重复的操作单独封装成公共模块,在测试用例执行过程中,当需要用到模块封装时对其进行调用,这样就最大限度的消除了重复,从而提高了测试用例的可维护性。

1.3 数据驱动测试

    虽然模块化测试很好的解决了脚本重复的问题,但是自动化测试脚本在开发过程中还是有很多不便,例如,在测试登录时,虽然过程是一样的,但是数据是不同的,模块化测试没有解决这个问题。于是,数据驱动测试出现了。    数据驱动测试:数据的改变驱动自动化测试的执行,最终引起测试结果的改变。即把数据驱动所需的测试数据参数化,我们可以用多种方式来存储和管理这些参数化的数据。

1.4 关键字驱动测试

    关键字驱动测试又被称为 表驱动测试 或 基于动作字测试。这类框架会把自动化操作封装成“关键字”,避免测试人员直接接触代码,多以“填写格” 的形式降低脚本的编写难度。

2 模块化与参数化

模块化与参数化一般需要配合使用,即在创建函数或类方法时为它们设置入参,从而使它们可以根据不同的参数执行相应的操作。

比如在某些测试用例中都要用到登录,登出,就可以将登录,登出操作模块化,在使用时直接调用即可

from selenium import webdriver

chrome_driver_path = r"C:\Users\Administrator\Envs\selenuimAutoTest\Lib\site-packages\selenium\webdriver\chrome\chromedriver.exe"

driver = webdriver.Chrome(executable_path=chrome_driver_path)

class Mail():

    def __init__(self, driver):
        self.driver = driver

    def login(self, username, password):
        self.driver.switch_to.frame("x-URS-iframe")
        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_name("dologin").click()

    def logout(self):
        self.driver.find_element_by_link_text("退出").click()

3 读取数据文件

虽然前面的例子中用到了参数化,但是大多数测试更倾向于把数据放到数据文件中,下面介绍几种常见的读取数据文件的方式

3.1 读取txt文件

    python提供了一下几种读取txt文件的方法

    

read():读取整个文件

readline():读取一行数据

readlines():读取所有行的数据
简单介绍一下,如下就可以拿到txt文件中数据,然后就可以对其进行操作了

with open("test.txt", "r") as f:
    allData = f.readlines()
    
for line in allData:
    pass

3.2 读取csv文件

    csv文件可以用来存固定字段的数据,使用率很高,那么如何操作csv文件呢

import csv
import codecs
from itertools import islice

# 读取csv文件
data = csv.reader(codecs.open("test.csv", "r", encoding="utf_8_sig"))

if data:
    for line in islice(data, 1, None):
        pass

注意:python读取csv文件比较简单:但是通常会遇到两个问题:

    (1) 中文乱码问题。通过codecs提供的open方法,在打开文件时指定编码类型,然后通过csv的reader方法读取文件,可以避免编码问题

    (2) 跳过csv的第一行。我们都知道csv文件第一行都会定义为字段名,所以在读取时一般都会跳过第一行。即islice()函数,它返回一个迭代器,第一个参数指定迭代对象,第二个参数指定开始迭代的位置,第三个参数指定结束位。

3.3 读取json

json是一种清香剂的数据交换格式,被广泛使用,python也可以读取操作json文件/数据

import json

with open("test.json", "r") as f:
    data = f.read()
    
json_data = json.loads(data)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值