美文网首页
Python selenium:模型(框架)

Python selenium:模型(框架)

作者: 别动我名字呀 | 来源:发表于2018-08-14 23:13 被阅读53次

    自动化测试模型

    自动化测试模型可以看作自动化测试框架与工具的设计思路,自动化不仅仅是单纯的写脚本运行就可以了,还需要考虑到如何使脚本效率提高,代码复用,参数化等问题。
    自动化测试模型分为四大类:线性模型,模块化驱动测试,数据驱动,关键词驱动。(行为驱动)

    一、线性模型

    线性脚本中的每个脚本相互独立,且不会产生其他依赖与调用。就是简单的模拟用户操作流程的脚本

    from selenium import webdriver 
    from selenium.webdriver.common.action_chains import ActionChains
     
    driver = webdriver.Firefox()
    driver.get(r"https://yunpan.360.cn/")
    driver.maximize_window ()
    driver.find_element_by_xpath("//*[@name='account']").clear()
    driver.find_element_by_xpath("//*[@name='account']").send_keys("1xxx36@qq.com")
    driver.find_element_by_name("password").clear()
    driver.find_element_by_name("password").send_keys("yxxx5336..")
    driver.find_element_by_xpath("//*[@id='login']/div/div[2]/form/p[4]/label/input").click()
    driver.find_element_by_xpath("//*[@id='login']/div/div[2]/form/p[5]/input").click()
     
    #定位到需要右击的元素
    right_click = driver.find_element_by_link_text("jemeter")
     
    #对定位到的元素执行鼠标邮件操作
    ActionChains(driver).context_click(right_click).perform()
    driver.quit()
    
    

    优点:每个用例都可以拿出来独立运行
    缺点:用例之间重复代码很多,开发、维护成本高

    二、模块化驱动测试

    把重复的操作代码封装为独立的公共模块,当用例执行时需要用到这部分,直接调用即可
    比如登录系统、退出登录、截图函数等等。

    • 1.实例:百度搜索
      baidu.py
    from selenium import webdriver
    from time import sleep
    
    
    class baidu():
        def su(self, driver):
            driver.get('https://www.baidu.com/')
            driver.find_element_by_id('kw').send_keys("模块化去驱动测试")
            driver.find_element_by_id('su').click()
            sleep(2)
            driver.quit()
    
    
    if __name__ == '__main__':
        driver = webdriver.Chrome()
        baidu().su(driver)
    

    *2.外部调用该模块:

    from Pr_Project.baidu import baidu
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    baidu().su(driver)
    

    优点:相比线性模型,代码维护性更好
    缺点:需要测试不同数据的用例时(例如登陆),数据驱动测试更合适

    三、数据驱动测试

    数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。
    装载数据的方式可以是列表、字典或是外部文件(txt、csv、xml、excel),目的就是实现数据和脚本的分离。

    实例:
    public.py

    from selenium import webdriver
    from time import sleep
    
    
    class baidu():
        def su(self, driver,contents):
            driver.get('https://www.baidu.com/')
            for content in contents:
                driver.find_element_by_id('kw').clear()
                driver.find_element_by_id('kw').send_keys(content)
                driver.find_element_by_id('su').click()
                sleep(2)
            driver.quit()
    
    
    if __name__ == '__main__':
        driver = webdriver.Chrome()
        contents=['数据驱动测试','循环搜索','搜索一下','啦啦啦']
        baidu().su(driver,contents)
    

    分别搜索多次:
    run_test.py

    from Pr_Project.login import baidu
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    contents = ['数据驱动测试', '循环搜索', '搜索一下', '啦啦啦']
    baidu().su(driver, contents)
    
    

    优点:具有模块化的封装,又能实现根据不同数据进行测试
    缺点:工作量大

    关键字驱动测试

    通过关键字的改变引起测试结果的改变叫关键字驱动测试。

    selenium IDE也是一种传统的关键字驱动的自动化工具,Robot Framework 是一个功能更强大的关键字驱动测试框架。

    目前还没有了解过,以后有机会补充

    相关文章

      网友评论

          本文标题:Python selenium:模型(框架)

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