UI自动化测试框架

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

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


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




猜你喜欢

转载自www.cnblogs.com/cslw5566/p/9318725.html