美文网首页Python自学及心得
5)自动化测试模型

5)自动化测试模型

作者: Jeff_9021 | 来源:发表于2022-08-22 23:34 被阅读0次

    一、库

    是代码集合;

    面向对象的代码集合形成的库,为类库;

    面向过程的为函数库;

    WebDriver库,提供了一组操作Web页面的方法与类。(Web自动化测试库)

    二、框架

    为了解决一个或一类问题;unittest框架主要用于测试用例的组织和执行,以及测试结果的生成,帮助完成测试工作。

    三、工具

    封装,屏蔽底层代码,例如:QTP

    四、模型

    module.py

    # -*- coding:utf-8 -*-

    class Mail:

        def __init__(self, driver):

            self.driver = driver

        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()

        def logout(self):

                """登出"""

                pass

    # -*- coding:utf-8 -*-

    from time import sleep

    from selenium import webdriver

    from webdriver_manager.chrome import ChromeDriverManager

    from module import Mail

    '''

    自动化测试模型:模块化+参数化

    模块化:把重复的操作单独封装成公共模块;

    参数化:把测试数据参数化'''

    # 登录邮箱为例

    # 打开浏览器,输入网站地址

    # driver = webdriver.chrome()

    driver = webdriver.Chrome(ChromeDriverManager().install())

    driver.get("https://email.163.com/")

    sleep(2)

    """

    # 输入账号driver.find_element_by_name("email").clear()

    driver.find_element_by_name("email").send_keys("admin")

    # 输入密码driver.find_element_by_name("password").clear()

    driver.find_element_by_name("password").send_keys("admin123")

    # 点击登录driver.find_element_by_id("dologin").click()

    sleep(5)

    # 退出登录#driver.find_element_by_name

    #退出浏览器driver.quit()

    """

    # 调用Mail类并接收driver驱动

    mail = Mail(driver)

    # 登录成功

    mail.login("admin", "admin123")

    '''如何实现下面的多个场景 ???'''

    # mail.login("", "")  # 登录账号为空

    # mail.login("", "password") # 账号为空

    # 登录之后的动作

    sleep(5)

    # 退出

    mail.logout()

    # 退出浏览器

    driver.quit()

    五、读取数据文件

    测试数据放到数据文件中,常见数据文件的读取方法如下:

    1)读取 txt 文件

    常用方法:

    read(): 读取整个文件

    readline():读取一行数据

    readlines(): 读取所有行的数据

    实例:

    # -*- coding:utf-8 -*-

    '''需要优化为读取配置通用脚本'''

    # 读取文件

    with(open("./data_file/user_info.txt", "r")) as user_file:

    data = user_file.readlines()

    # 对文件内容进行格式化处理成数组类型

    users = []

    for line in data:

    # [:-1]对字符串进行切片,去掉最后一个字符,因为每行结尾都有一个换行符”\n“

        user = line[:-1].split(":")

        users.append(user)

    # 调试一下,打印出来

    print(users)

    2)读取CSV文件

    # -*- coding:utf-8 -*-

    import csv

    import codecs

    from itertools import islice

    # 读取本地CSV文件

    '''

    1、通过codecs的open()方法,在打开文件时指定编码类型;2、通过CSV模块的reader()方法读取文件,避免中文乱码'''

    data = csv.reader(codecs.open('./data_file/user_info.csv', 'r', 'utf_8_sig'))

    # 仍存在问题:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte

    换成 gbk 编码类型 可解决

    # 存放用户数据

    users = []

    # 循环输出每行信息

    '''

    1、itertools模块提供了用于操作迭代对象的函数islice()

    2、islice()第一个参数指定迭代对象,第二个参数指定迭代的位置,第三个参数表示结束位。'''

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

    users.append(line)

    # 输出调试一下

    print(users)

    3)读取json文件

    import json

    with open("./data_file/user_info.json", 'r') as f:

        data = f.read()

    user_list = json.loads(data)   #为何使用loads()方法???

    print(user_list)

    4)读取xml文件

    from xml.dom.minidom import parse

    # 打开xml文件

    dom = parse('./data_file/config.xml')

    # 获得文档元素对象

    root = dom.documentElement

    # 获取一组标签

    tag_name = root.getElementsByTagName("platform")

    # 第一种:获取标签对之间的数据

    data = tag_name[0].firstChild.data

    print(data)

    # 第二种:获取标签的属性值

    log_info = root.getElementsByTagName("login")

    # 获取第一个login标签的username属性值

    username = log_info[0].getAttribute('username')

    print(username)

    password = log_info[0].getAttribute('password')

    print(password)

    # 获取第二个login标签的username属性值

    username = log_info[1].getAttribute('username')

    print(username)

    相关文章

      网友评论

        本文标题:5)自动化测试模型

        本文链接:https://www.haomeiwen.com/subject/rdzvgrtx.html