首页 > 其他 > 详细

pom设计模型实现ui自动化测试

时间:2020-12-06 22:37:05      阅读:186      评论:0      收藏:0      [点我收藏+]
 
POM简介
    Page Object Model (POM) 直译为“页面对象模型”,这种设计模式旨在为每个待测试的页面创建一个页面对象(class),将那些繁琐的定位操作封装到这个页面对象中,只对外提供必要的操作接口,是一种封装思想
一般分为基类、页面对象类、测试用例类、测试数据类
 
1、base_page.py:
将常用行为进行二次封装, 一般而言,封装的内容有:元素定位、输入、点击、访问url、进入iframe等
 
import os
from selenium import webdriver

class BasePage:
    #构造函数
    def __init__(self,driver):
        self.driver=driver

    def get_chrome(self):
        chrome_path = os.path.dirname(__file__) + ./../webdriver/chromedriver.exe
        driver = webdriver.Chrome(executable_path=chrome_path)
        return driver

    # 访问URL
    def open_url(self):
        self.driver.get(self.url)

    # 退出
    def quit(self):
        self.driver.quit()

    # 元素定位,*不定长参数
    def locator(self,location):
        return self.driver.find_element(*location)

    # 输入
    def input(self,location,txt):
        self.locator(location).send_keys(txt)

    # 点击
    def click(self,location):
        self.locator(location).click()

    # 获取标题
    def get_title(self):
        return self.driver.title

    # ...

 

技术分享图片
 
技术分享图片
 
2、login_page.py:
LoginPage页面对象,实现页面登陆行为
 
class LoginPage(BasePage):
    url=...
    #页面元素
    user=(By.ID,os_username)
    pwd=(By.ID,os_password)
    button=(By.ID,loginButton)

    def login(self,username,password):
        self.open_url()
        self.input(self.user,username)
        self.input(self.pwd,password)
        self.click(self.button)

 

 
技术分享图片
3、login.yaml:
用ddt模块导入yaml文件来做数据驱动,代码简单好维护,调试也方便
-
  username: TANGHAO009
  password: w6736039
#-
#  username: TANGH
#  password: w67339
#-
#  username:
#  password:

 

技术分享图片
 
4、test_case.py:
用例部分
注:
setUp():每个测试case运行之前运行
tearDown():每个测试case运行完之后执行
setUpClass():必须使用@classmethod 装饰器,  所有case运行之前只运行一次
tearDownClass():必须使用@classmethod装饰器, 所有case运行完之后只运行一次
import unittest
from study_pom_ui.page_object.login_page import LoginPage
from study_pom_ui.page_object.click_page import ClickPage
from ddt import ddt,file_data
from study_pom_ui.base.base_page import BasePage

@ddt
class TestLogin(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver = BasePage.get_chrome(cls)
        cls.lp=LoginPage(cls.driver)
        cls.cp=ClickPage(cls.driver)



    @file_data(../data/login.yaml)
    def test_01(self,**kwargs):
        self._testMethodName = case_01
        self._testMethodDoc = 测试是否confluence能够成功登陆
        username=kwargs[username]
        password=kwargs[password]
        self.lp.login(username,password)
        ac=BasePage.get_title(self)
        self.assertEqual(ac,"主页面 - Confluence")

    def test_02(self):
        self._testMethodName = case_02
        self._testMethodDoc = 测试是否member能够正常点击
        self.driver.implicitly_wait(100)
        self.cp.click_member()
        ac=BasePage.get_title(self)
        self.assertEqual(ac,"用户目录 - Confluence")

    @classmethod
    def tearDownClass(cls):
        BasePage.quit(cls)








if __name__=="__main__":
    unittest.main(verbosity=2)

 

 
技术分享图片
 
 
5、run_all.py
加载所有的测试用例,并且生成网页测试报告
import os
import unittest
import HTMLTestReportCN

# 加载所有用例到all_suite套件
case_path =os.path.dirname( __file__ ) + ./Testcase/
discover = unittest.defaultTestLoader.discover(start_dir=case_path,
                                               pattern=test_*.py,
                                               top_level_dir=case_path
                                               )
all_suite = unittest.TestSuite()
all_suite.addTest( discover )

#配置测试报告并执行用例
report_path = os.path.dirname(__file__) + /reports/
report_dir =HTMLTestReportCN.ReportDirectory(report_path)
report_dir.create_dir(网页自动化测试项目)
result_html_path =HTMLTestReportCN.GlobalMsg.get_value(report_path)
fp = open(result_html_path,wb)
html_runner =HTMLTestReportCN.HTMLTestRunner(stream=fp,
                                              title=哒哒哒网页自动化测试项目,
                                              description=confluence网页,
                                            tester=哒哒哒)
html_runner.run( all_suite )

 

技术分享图片
 
 
网页测试报告:
技术分享图片

 

 

 
 

pom设计模型实现ui自动化测试

原文:https://www.cnblogs.com/tang-hao001/p/14094248.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!