zoukankan      html  css  js  c++  java
  • 自动化测试模型

    #自动化测试库、框架和工具的区别

    # 1.自动化测试库(library)
    # 库是代码集成的一个产品,供程序员调用,如webdriver就是一个库(web自动化测试库)。面向对象的代码组织形成的库叫类库;面向过程的代码组织形成的库叫函数库

    # 2.自动化测试框架(framework)
    # 框架是为解决一个或一类问题而开发的产品。用户一般只要使用框架提供的函数或类,就可实现全部功能,如unitest框架(他主要用于实现测试用例的组织和执行,以及测试结果的生成)

    # 3.自动化测试工具(tools)
    # 与框架所做的事情类似,屏蔽了底层代码,一般会提供单独的操作界面供用户操作,如selenium IDE和QTP

    #自动化测试模型:自动化测试框架与工具设计的思想

    # 1.线性测试
    # a.通过录制或编写对应用程序的操作步骤产生相应的线性脚本,每个测试脚本相对独立,且不产生其他依赖与调用
    # b.开发成本搞,测试用例直接可以会存在重复的操作,需为每一个用例去只做或编写重复的操作
    # c.维护成本高,正是因为用例之间存在重复操作,所以当这些用例发生变化后,就要逐一去修改

    # 2.模块化驱动测试
    # a.借鉴编程语言中模块化的思想,把重复的操作做成公共模块,当用例执行过程中需要用到这一模块操作时被调用,这样消除了重复从而提高了用例的可维护性
    # b.提高了开发效率,不用重复编写相同的操作脚本
    # c.简化了维护的复杂性,对于重复的操作只要修改公共模块即可,无需逐一去修改
    #模块化驱动实例(将登录和退出写成函数,需要的时候直接调用就好了)
    # from selenium import webdriver
    # driver = webdriver.Firefox()
    # driver.get("https://login.xiu.com/")
    #
    # def login():
    # driver.find_element_by_link_text("密码登录").click()
    # driver.find_element_by_id("J_username").clear()
    # driver.find_element_by_id("J_username").send_keys("13684995613")
    # driver.find_element_by_id("J_password").clear()
    # driver.find_element_by_id("J_password").send_keys("jmy@123")
    # driver.find_element_by_id("login_Btn").click()
    #
    # def logout():
    # driver.find_element_by_link_text("[ 退出 ]").click()
    # driver.quit()
    # login()
    # logout()

    # 3.数据驱动测试
    # a.数据驱动说白点就是数据的参数化,因为输入数据的不同从而引起输出结果的不同(数据与脚本分离)
    # b.进一步增强了脚本的复用性,操作步骤一致、测试数据不一致的时候,只需要输入不同的测试数据就可以执行
      
        #数据驱动实例(将用户名和密码参数化,调用这个函数的时候随意传入一个正确的账号和密码即可)
    # from selenium import webdriver
    # driver = webdriver.Firefox()
    # driver.get("https://login.xiu.com/")
    #
    # def login(username,passwd):
    # driver.find_element_by_link_text("密码登录").click()
    # driver.find_element_by_id("J_username").clear()
    # driver.find_element_by_id("J_username").send_keys(username)
    # driver.find_element_by_id("J_password").clear()
    # driver.find_element_by_id("J_password").send_keys(passwd)
    # driver.find_element_by_id("login_Btn").click()
    #
    # def logout():
    # driver.find_element_by_link_text("[ 退出 ]").click()
    # driver.quit()
    # login("13694917391","xiu123456")
    # logout()

    # 4.关键字驱动测试
    # a.关键字驱动与数据驱动相比,无非是把“数据”换成“关键字”,通过关键字的改变引起测试结果的改变
    # b.典型的关键字驱动工具:QTP、robot framework(RIDE)、selenium IDE等。这类工具封装了底层的代码,提供给用户独立的图像界面,以填表格的形式免除测试人员对代码的恐惧,从而降低脚本编写的难度


    #参数化搜索关键字
    # from selenium import webdriver
    # search_text = ['python','selenium','自动化测试']
    #
    # for text in search_text:
    # driver = webdriver.Firefox()
    # driver.get("http://www.baidu.com")
    # driver.find_element_by_id("kw").send_keys(text)
    # driver.find_element_by_id("su").click()
    # driver.quit()


    #读取文件:read()读取整个文件;readline()读取一行数据;readlines()读取所有行的数据
    # 以上面的登录为例子
    # 存放用户信息的文件(user.txt)
    # 13684995613,jmy@123
    # 13694917391,xiu123456
    # 111111,aaaa

    # user_file = open('user.txt','r')
    # lines = user_file.readlines()
    # user_file.close()
    #
    # for line in lines:
    # username = line.split(',')[0]
    # password = line.split(',')[1]
    # print("用户名:%s,密码:%s"%(username,password))

    # 读取CSV文件
    # CSV文件内容:
    # test,123@qq.com,19,man
    # test1,234@qq.com,20,woman
    # test2,345@qq.com,21,man
    # import csv
    # date = csv.reader(open('info.csv','r'))
    #
    # for user in date:
    # print(user[1])
    # print(user)

    # C:UsersxiuAppDataLocalProgramsPythonPython36-32python.exe D:/study/besttest/XIU/ffff.py
    # 123@qq.com
    # ['test', '123@qq.com', '19', 'man']
    # 234@qq.com
    # ['test1', '234@qq.com', '20', 'woman']
    # 345@qq.com
    # ['test2', '345@qq.com', '21', 'man']
    #
    # Process finished with exit code 0

    #读取XML文件:有时候我们需要测试的数据是不规则的,例如我们要一个配置文件保存当前自动化测试脚本的URL、浏览器、用户名和密码等
    # info.xml文件
    # <?xml version="1.0" encoding="utf-8" ?>
    # <info>
    # <base>
    # <platform>windows</platform>
    # <browser>Firefox</browser>
    # <url>http://www.baidu.com</url>
    # <login username="admin" password="123456"/>
    # <login username="guest" password="654321"/>
    # </base>
    # <test>
    # <province>北京</province>
    # <province>广东</province>
    # <city>深圳</city>
    # <city>珠海</city>
    # <city>佛山</city>
    # <city>广州</city>
    # <province>浙江</province>
    # <city>杭州</city>
    # </test>
    # </info>

    # 1.获得标签信息
    # from xml.dom import minidom
    # dom = minidom.parse('info.xml') #打开文档
    # root = dom.documentElement #获得文档元素对象
    # print(root.nodeName)
    # print(root.nodeValue)
    # print(root.nodeType)
    # print(root.ELEMENT_NODE)
    # C:UsersxiuAppDataLocalProgramsPythonPython36-32python.exe D:/study/besttest/XIU/ffff.py
    # info
    # None
    # 1
    # 1
    #
    # Process finished with exit code 0

    # 2.获得任意标签名
    # from xml.dom import minidom
    #
    # dom = minidom.parse('info.xml')
    # root = dom.documentElement
    #
    # tagname = root.getElementsByTagName('browser')
    # print(tagname[0].tagName)
    # tagname=root.getElementsByTagName('login')
    # print(tagname[1].tagName)
    # tagname=root.getElementsByTagName('province')
    # print(tagname[2].tagName)

    # C:UsersxiuAppDataLocalProgramsPythonPython36-32python.exe D:/study/besttest/XIU/ffff.py
    # browser
    # login
    # province
    #
    # Process finished with exit code 0

    # 3.获得标签的属性值
    # from xml.dom import minidom
    #
    # dom = minidom.parse('info.xml')
    # root = dom.documentElement
    # logins = root.getElementsByTagName('login')
    #
    # #获得login标签的username属性值
    # username = logins[0].getAttribute("username")
    # print(username)
    # #获得login标签的password属性值
    # passwd = logins[0].getAttribute("password")
    # print(passwd)
    #
    # username=logins[1].getAttribute("username")
    # print(username)
    # passwd = logins[1].getAttribute("password")
    # print(passwd)

    # C:UsersxiuAppDataLocalProgramsPythonPython36-32python.exe D:/study/besttest/XIU/ffff.py
    # admin
    # 123456
    # guest
    # 654321
    #
    # Process finished with exit code 0

    # 4.获得标签对之间的数据
    # from xml.dom import minidom
    #
    # dom = minidom.parse('info.xml')
    # root = dom.documentElement
    # province = root.getElementsByTagName('province')
    # citys = dom.getElementsByTagName('city')
    #获得第二个province标签对的值
    # p2 = province[1].firstChild.data
    # print(p2)
    #
    # c1 = citys[0].firstChild.data
    # print(c1)
    # c2 = citys[1].firstChild.data
    # print(c2)

    # C:UsersxiuAppDataLocalProgramsPythonPython36-32python.exe D:/study/besttest/XIU/ffff.py
    # 广东
    # 深圳
    # 珠海
    #
    # Process finished with exit code 0
  • 相关阅读:
    数据库之表与表之间的关系
    数据库之完整性约束条件
    基本数据类型
    数据库
    Django ajax 发送post请求 前端报错解决
    Django数据库建立注意事项
    编程单词汇总
    程序员必掌握600单词
    python思维导图
    用jQuery模拟hover选择效果
  • 原文地址:https://www.cnblogs.com/ermm/p/7655489.html
Copyright © 2011-2022 走看看