自动化测试模式

1.自动化测试的四种模式:

1.数据驱动测试
2.关键字驱动测试
3.混合型测试
4.行为驱动测试

2.创建和实施web自动化测试的步骤:

1.选择测试用例(从功能测试中进行选择)
2.根据自动化执行的测试用例,分析出测试框架需要模拟的手工操作和重复高的流程和逻辑
3.把手工测试用例及重复高的测试逻辑用在代码中实现,用在类中封装
4.根据测试业务的类型和本身技术能力,选择测试模式框架
5.确定测试模式框架后,封装常用功能
6.对框架代码进行集成测试和系统测试
7.编写自动化框架的常用api文档,以供他人参阅

3.python内置模块CSV

CSV: 逗号分隔值

4.什么是数据驱动?

相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分享,这样的测试脚本设计模式称为数据驱动

5.实施数据驱动测试步骤如下:

1.编写测试脚本,脚本需要支持从程序对象、文件或数据库读入测试数据
2.将测试脚本使用的测试数据存入程序对象、文件或数据库等外部介质中
3.运行脚本过程中,循坏调用存储在外部介质中的测试数据
4.验证所有的测试结果是否符合预期结果

6.数据驱动测试环境准备

ddt模块:pip install ddt

#1.打开百度首页
#2.在搜索框输入一个搜索关键词
#3.单击搜索按钮
#4.验证搜索结果页面是否包含预期的关键字字符串,包含则认为测试执行通过,否则认为测试执行失败,并在测试过程中打印日志
#coding:gbk
import time
import logging
import traceback  # traceback模块被用来跟踪异常返回信息,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()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容