亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python PO設計模式的具體使用

系統 2099 0

無規矩不成方圓。編寫代碼也是,如果沒有大概的框架,管理代碼將會是一件很頭疼的事。

先看看筆者以前寫的python腳本:

Python PO設計模式的具體使用_第1張圖片

如果只有一個用例,這樣看著好像挺整潔的。但是當用例越來越多后,如果元素定位發生了改變,那你將要在多個類、多個方法中,去尋找那個元素,然后一個一個修改,這將耗費很多時間。

引入PO設計模式后,管理代碼將會很輕松。

什么是PO設計模式?

PO設計模式是一種業務流程與頁面元素操作分離的模式;這意味著,當UI發生變化,元素定位發生變化時,只需要在一個地方修改即可。

下面是代碼目錄:

Python PO設計模式的具體使用_第2張圖片

頁面元素的定位、封裝寫到pages模塊中;業務流程的操作寫到test_case模塊中;run_main是執行所有用例。

其它如讀取配置文件等,可另外寫到models模塊中。

模塊下的文件如下:

Python PO設計模式的具體使用_第3張圖片

models模塊

            
configfile.cfg:

#存儲后臺登錄賬號密碼
[login]
username=admin
password=admin

#平臺地址
[platform]
url = http://ip/admin
          

讀取文件(readconfig.py):

            
import ConfigParser
import os

conf = ConfigParser.RawConfigParser()
#讀取文件
conf.read(os.path.join(os.getcwd(),'models\\configfile.cfg'))
#賬號、密碼
username = conf.get("login", "username")
password = conf.get("login", "password")

#url
url = conf.get("platform", "url")
          

Myunit.py:

            
from selenium import webdriver
import unittest

from models import readconfig

class MyTest(unittest.TestCase):
  def setUp(self):
    self.driver = webdriver.Firefox()
    self.driver.get(readconfig.url)
    self.driver.maximize_window()
    time.sleep(4)
    #self.driver.implicitly_wait(2)
    
  def tearDown(self):
    self.driver.quit()
          

pages模塊

pages下的登錄頁面loginpage.py

            
from selenium.webdriver.common.by import By
from pages.page import BasePage

class LoginPage(BasePage):
  '''
  用戶登錄頁面
  '''
  #元素集
  #用戶名
  username = (By.NAME,"userName")
  #密碼
  passwd = (By.NAME,"password")
  
  #登錄 按鈕
  loginbtn = (By.XPATH,"http://form[@id='frmLogin']/div[2]/footer/button")

  def input_username(self,text):
    print u"輸入用戶名:",text
    self.input_text(self.username, text)
    
  def input_passwd(self,text):
    print u"輸入密碼:",text
    self.input_text(self.passwd, text)
    
  def click_loginbtn(self):
    print u"點擊 登錄 按鈕"
    self.click(self.loginbtn)
          

test_case模塊

test_case下的登錄操作logintest.py

            
from models.myunit import MyTest
from models import readconfig
from pages.loginpage import LoginPage
import unittest
import os

#所有test類都繼承MyTest類;#每次執行xx_test方法時,會先執行MyTest中的setUp(),結束操作后再執行tearDown()
class LoginTest(MyTest):
  '''登錄測試'''
  def test_login1(self):
    '''用戶名和密碼都為空'''
    try:
      
      loginpage = LoginPage(self.driver)
      loginpage.login_sys("", "")
      self.assertEqual(loginpage.none_user_hint(), u"請輸入用戶名")
      self.assertEqual(loginpage.none_passwd_hint(), u"請輸入密碼")
    except Exception as msg:
      print(u"異常原因:%s"%msg)
      self.driver.get_screenshot_as_file(os.path.join(readconfig.screen_path,'login1.png'))
      raise Exception("false")
          

run_main

run_main.py:

            
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import unittestimport HTMLTestRunner
from models import readconfig 

report_path = readconfig.report_path

if __name__ == '__main__':
  #suite = unittest.TestSuite()
  #suite.addTest(TestAll('test_a'))
  now = time.strftime("%Y%m%d%H%M%S",time.localtime(time.time()))
  filename = report_path+now+'result.html'
  fp = open(filename,'wb')
  runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='REPORT',description='RESULT')
  discover = unittest.defaultTestLoader.discover("test_case",pattern="*test.py",top_level_dir=None)
  runner.run(discover)
  fp.close()
          

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久99精品久久久66 | 亚洲精品一区二区三区五区 | 99久久国产综合精品网成人影院 | 91在线品视觉盛宴免费 | 亚洲视频免费一区 | 国产精品欧美亚洲韩国日本 | 免费黄片毛片 | 在线中文字幕视频 | 亚洲图片欧美在线 | 亚洲欧美日韩中文在线 | 91精品国产一区二区三区左线 | m3u8久久国产精品影院 | 欧美高清在线精品一区 | av大片 | h片在线观看免费 | 久久99视频免费 | 免费看欧美日韩一区二区三区 | 精品成人免费播放国产片 | 在线亚洲播放 | 九九365资源稳定资源站 | 国产成人精品久久二区二区 | 国产高清一区二区三区 | 国产欧美日韩成人 | 国产一区二区三区免费观看 | 天天操天天操天天射 | 久久高清影院 | 9热在线精品视频观看 | 桃子在线观看 | 久久精品亚洲综合一品 | 日韩欧美在 | 国产精品久久久久激情影院 | 伊人网狠狠干 | 国产在线成人精品 | 欧美日韩综合精品一区二区三区 | 日韩一区二区精品久久高清 | 色综合久久88一加勒比 | 97在线观看成人免费视频 | 九九久久国产精品 | 阳光灿烂的日子在线观看 | 在线日本妇人成熟免费观看 | 欧美三级在线观看不卡视频 |