Python的模組與函式以及與自動化的結合

2021-07-13 12:05:54 字數 4627 閱讀 8567

3

模組與函式

3.1程式結構

python

的程式由

package,module,function

組成,分別是包,模組,函式。模組是函式和類的集合,包,模組,函式之間的關係如下:

3.2模組

python

的程式就是由模組來組成,乙個

python

檔案可以看成是乙個模組,而模組一般由**,函式,或者類組成。如下**,建立

demo.py

檔案,編寫乙個自動化的測試指令碼,

demo.py

檔案就是模組,見**:

#!coding:utf-8

from seleniumimport webdriver

driver=webdriver.firefox()

driver.maximize_window()

driver.get('')

element=driver.find_element_by_id('kw')

element.send_keys('selenium')

driver.quit()

使用模組中的函式或者類的時候,首先需要把模組匯入,模組的匯入是

import

,import

可以直接匯入模組,如

import time

。如果不想使用程式的字首,可以使用

from ... import ...

,如from time import sleep。

模組的屬性

:__name__

一般是判斷是否是程式的入口

,見程式的例項**:

#!coding:utf-8

from seleniumimport webdriver

driver=webdriver.firefox()

driver.maximize_window()

driver.get('')

element=driver.find_element_by_id('kw')

element.send_keys('selenium')

driver.quit()

if__name__=='__main__':

print u'

主程式執行

'else:

print u'sorry,

程式被另外的模組呼叫

' 3.3函式

python

的函式是是一段可重複多次呼叫的**,依據引數,來返回結果。

python

的函式定義非常簡單,如下定義乙個二個數相加的方法,見**:

def add(x,y):

return x+y

print add(2,3)

對自動化的測試指令碼進行函式化,見**:

登入').click()

driver.find_element_by_id('tangram__psp_8__username').send_keys('[email protected]')

driver.find_element_by_id('tangram__psp_8__password').send_keys('cl070209')

driver.find_element_by_id('tangram__psp_8__submit').click()

element=driver.find_element_by_xpath(".//*[@id='s_username_top']/span")

#獲取使用者暱稱

nicheng=element.text

sleep(3)

actionchains(driver).move_to_element(element).perform()

sleep(3)

driver.find_element_by_xpath(".//*[@id='s_user_name_menu']/div/a[5]").click()

driver.find_element_by_xpath(".//*[@id='tip_con_wrap']/div[3]/a[3]").click()

assert text in u'

'函式化後的檔案為

location.py

,我們把需要封裝的公共方法封裝在

location.py

的檔案中,

location.py

的檔案原始碼為:

#!coding:utf-8

from seleniumimport webdriver

from selenium.webdriver.common.action_chainsimport actionchains

from time import sleep

deffindid(driver,id):

f=driver.find_element_by_id(id)

return f

deffindlinktext(driver,linktext):

f=driver.find_element_by_link_text(linktext)

return f

def findxpath(driver,xpath):

f=driver.find_element_by_xpath(xpath)

return f

#登入方法

deflogin(driver,username='[email protected]',passwd='194935server'):

findlinktext(driver,u'

登入').click()

sleep(2)

findid(driver,'tangram__psp_8__username').send_keys(username)

sleep(2)

findid(driver,'tangram__psp_8__password').send_keys(passwd)

sleep(2)

findid(driver,'tangram__psp_8__submit').click()

sleep(3)

#退出方法

def exit(driver):

sleep(2)

element=findxpath(driver,".//*[@id='s_username_top']/span")

actionchains(driver).move_to_element(element).perform()

sleep(2)

findxpath(driver,".//*[@id='s_user_name_menu']/div/a[5]").click()

sleep(2)

findxpath(driver,".//*[@id='tip_con_wrap']/div[3]/a[3]").click()

#獲取暱稱方法

defgetnicheng(driver):

element=findxpath(driver,".//*[@id='s_username_top']/span")

return element.text

在baidu.py

呼叫封裝成函式的檔案

,簡化自動化的測試指令碼,

檔案的原始碼為:

#coding:utf-8

from seleniumimport webdriver

fromselenium.webdriver.common.action_chains import actionchains

from time import sleep

import location

driver=webdriver.firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get('')

location.login(driver)

text=location.getnicheng(driver)

location.exit(driver)

assert text in u'

清晨無涯

'driver.quit()

箭頭函式與普通函式以及this指向問題

沒有引數只有單條語句 var fun consoloe.log 1 fun 乙個引數單條語句,可以省略 var fun a console.log 1 a就是傳入的單個引數多個引數多條語句 var fun a,b 返回的是物件要加 var fun var b return 1 var b new b...

python 函式與模組

1,定義函式 def 函式名 參數列 函式語句 return 發回值 引數和返回值都可以省略 def hello print xyf 無敵 hello 2,引數傳遞 def add a,b return a b print add a b 順序依次傳遞 print add b a a b 按形參賦值...

Python 函式以及異常處理

define 定義 def 方法名字 形參 def test pass test 無引數無返回值 def test print 這是我的地盤 test 無引數有返回值 def test fond 學習python使我快樂 return fond t test print t 有引數無返回值 def ...