91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Python中應用PO設計模式

發布時間:2021-03-24 15:16:25 來源:億速云 閱讀:188 作者:Leah 欄目:開發技術

怎么在Python中應用PO設計模式?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

怎么在Python中應用PO設計模式

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

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

什么是PO設計模式?

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

下面是代碼目錄:

怎么在Python中應用PO設計模式

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

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

模塊下的文件如下:

怎么在Python中應用PO設計模式怎么在Python中應用PO設計模式怎么在Python中應用PO設計模式

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,"//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()

關于怎么在Python中應用PO設計模式問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐至县| 南宁市| 桑植县| 正镶白旗| 成安县| 鸡东县| 三江| 麻城市| 大悟县| 宝坻区| 开江县| 广灵县| 玛纳斯县| 南川市| 青阳县| 谢通门县| 庄河市| 苍溪县| 通榆县| 汝城县| 乌苏市| 汾阳市| 德化县| 宜阳县| 阳朔县| 莱西市| 鹿邑县| 莱州市| 普陀区| 唐山市| 阿拉尔市| 宜君县| 蒲城县| 清丰县| 清河县| 同德县| 紫金县| 鄂托克前旗| 凤冈县| 尤溪县| 武功县|