1.自动化测试的四种模式:
1.数据驱动测试
2.关键字驱动测试
3.混合型测试
4.行为驱动测试
2.创建和实施web自动化测试的步骤:
1.选择测试用例(从功能测试中进行选择)
2.根据自动化执行的测试用例,分析出测试框架需要模拟的手工操作和重复高的流程和逻辑
3.把手工测试用例及重复高的测试逻辑用在代码中实现,用在类中封装
4.根据测试业务的类型和本身技术能力,选择测试模式框架
5.确定测试模式框架后,封装常用功能
6.对框架代码进行集成测试和系统测试
7.编写自动化框架的常用api文档,以供他人参阅
3.python内置??镃SV
CSV: 逗号分隔值
4.什么是数据驱动?
相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分享,这样的测试脚本设计模式称为数据驱动
5.实施数据驱动测试步骤如下:
1.编写测试脚本,脚本需要支持从程序对象、文件或数据库读入测试数据
2.将测试脚本使用的测试数据存入程序对象、文件或数据库等外部介质中
3.运行脚本过程中,循坏调用存储在外部介质中的测试数据
4.验证所有的测试结果是否符合预期结果
6.数据驱动测试环境准备
ddt??椋簆ip install ddt
#1.打开百度首页
#2.在搜索框输入一个搜索关键词
#3.单击搜索按钮
#4.验证搜索结果页面是否包含预期的关键字字符串,包含则认为测试执行通过,否则认为测试执行失败,并在测试过程中打印日志
#coding:gbk
import time
import logging
import traceback # traceback??楸挥美锤僖斐7祷匦畔?format_exc()方法返回字符串
import ddt
from selenium import webdriver
import unittest
from selenium.common.exceptions import NoSuchElementException
# 初始化日志对象
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s-%(name)s-%(levelname)s-%(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
filename='./test-ddt.log'
)
# 数据驱动装饰器
@ddt.ddt
class TestDemo(unittest.TestCase):
def setUp(self) -> None:
self.driver = webdriver.Chrome()
# 数据驱动时指定的数据,每个数据是个list
@ddt.data(["郎平", "排球"],
["姚明", "保龄球"])
# 解包,将测试数据对应到testdata,expectdata
@ddt.unpack
def test_dataDrivenByFile(self, testdata, expectdata):
url = "http://www.baidu.com"
self.driver.get(url)
self.driver.maximize_window()
self.driver.implicitly_wait(10)
try:
self.driver.find_element("id", "kw").send_keys(testdata)
self.driver.find_element("id", "su").click()
time.sleep(3)
self.assertTrue(expectdata, self.driver.page_source)
except NoSuchElementException as e:
logging.error("查找的页面元素不存在,异常信息:" + str(traceback.format_exc()))
except AssertionError as e:
logging.info('搜索的-"%s",期望-"%s",-失败' % (testdata, expectdata))
except Exception as e:
logging.error("未知错误,错误信息:" + str(traceback.format_exc()))
else:
logging.info('搜索的-"%s",期望-"%s",-成功' % (testdata, expectdata))
def tearDown(self) -> None:
self.driver.quit()
if __name__ == '__main__':
unittest.main()