zoukankan      html  css  js  c++  java
  • UI自动化测试框架

    UI自动化测试框架(主要cases(test_study)和page)tools中的logger.py  path.py  pyse.py  tool.py HTMLTestRunner.py(网页模板)不多介绍  

    case和page 相解耦 一般只需维护page,不同功能继承不同的page属性

    ui自动化主要用于回归测试。

    0.0需求分析:

    1、pageObject  页面分层
    将每个页面看做一个代码类 每一个可点击的功能点 当做类的函数
    比如:
    class login_page():
    pass
    def username():
    pass

    def passwd():
    pass


    def login():
    pass



    lib
    pyse 对于selenium二次封装
    logger 日制模块
    HTMLTestRunner 生成HTML报告的
    path 一些我们要用到的环境地址


    2、case 和 page分离

    1.1  test_study  (用来设计用例)

    import unittest  ###case基于该模块
    from page.page import Page

    class TestStudy(unittest.TestCase): ####
    @classmethod ###每个类生效 如果不加是每个def执行
    def setUpClass(cls):
    cls.page = Page()###实例化
    cls.page.open('http://ui.imdsx.cn/uitester/')##打开

    @classmethod ##一个case打开一个浏览器就可以
    def tearDownClass(cls):
    cls.page.quit() ###关闭连接

    def test_a_study(self): ###以test文件开头
    # self.page.send_i1()
    # 执行滚动js
    self.page.new_tag_js()
    # 点击按钮 打开新的标签
    self.page.new_tag()
    # 切换 tag指针
    self.page.swicth_windows()
    # 在新建的tag页面输入字符串
    self.page.send_new_tag()
    # 校验是否为True
    self.assertTrue(self.page.check_study(self.test_a_study.__name__))###unitest提供的方法。


    if __name__ == '__main__':
    unittest.main() ##执行用例
    1.2.Page()
    from lib.pyse import Pyse  ###导入lib目录下的pyse


    # 实例化 pyse 和提供一个公用功能
    class BasePage(object):
    def __init__(self):
    self.pyse = Pyse('chrome') ##实例化

    def open(self, url):
    self.pyse.open(url) ##再次封装 方便调用

    def close(self):
    self.pyse.close()

    def quit(self):
    self.pyse.quit()

    def swicth_windows(self):
    self.pyse.open_new_window()


    # 公司业务的页面 实际业务相关
    class StudyPage(BasePage):

    def send_i1(self):
    css = 'css=>#i1'
    self.pyse.type(css, '11111')

    def new_tag(self):
    css = 'css=>[href="/new-index/"]' ###属性定位
    self.pyse.click(css)

    def new_tag_js(self):
    js = 'window.scrollTo(0, 0);' ##滚动到最上面
    self.pyse.js(js)

    def check_study(self,name):
    css = 'id=>newtag0'
    res = self.pyse.wait_and_save_exception(css, name)###后台需要匹配测试用例,需要用用例名命名
    return res


    class NewTagPage(StudyPage):
    def send_new_tag(self):
    css = 'id=>newtag'
    self.pyse.type(css, 'xxxxxx')


    # 由于可能存在多个业务页面 所以通过继承最后只实例化page
    class Page(NewTagPage):
    pass


    if __name__ == '__main__':
    page = Page() ##因为继承关系 只需实例化就可以用其他。
    page.open('http://ui.imdsx.cn/uitester/')
    page.send_i1()
    1.3main()
    import unittest
    from lib.path import WEBCASEPATH,REPORTPATH
    from lib.HTMLTestRunner import HTMLTestRunner
    from lib.tool import Tool
    class Main(object):
    def run(self):
    Tool().clear_picture()##实例化再调用清除图片
    suit = unittest.TestSuite()
    cases = unittest.defaultTestLoader.discover(WEBCASEPATH) #####case路径
    for case in cases:
    suit.addTest(case)
    f = open(REPORTPATH,'wb')
    runner = HTMLTestRunner(f, verbosity=1, title=u'测试报告', description=u'用例执行情况:')
    runner.run(suit)
    f.flush()####实时将内存写入磁盘
    f.close()
    if __name__ == '__main__':
    Main().run()


  • 相关阅读:
    HTML <a> 标签的 target 属性
    CSS display 属性
    test
    ubuntu开启ssh服务
    Ubuntu各个版本的介绍
    Ubuntu和RedHat的区别
    黑苹果Mac系统快捷键修改
    安装Ubuntu 8.04 Server
    VirtualBox虚拟机网络设置(转)
    修改eclipse的背景色(转载)
  • 原文地址:https://www.cnblogs.com/cslw5566/p/9318725.html
Copyright © 2011-2022 走看看