新聞中心
讀懂十行代碼不如自己親自上手編寫一行!代碼想熟練最好的方法就是能夠通過代碼解決工作中的實際問題,例如完成UI自動化測試、接口測試、創(chuàng)建測試數(shù)據(jù)、構(gòu)建測試環(huán)境、清理數(shù)據(jù)環(huán)境等等。上述這些場景我們都可以從把要解決的問題封裝成函數(shù)開始,例如我用ui自動化進(jìn)行登陸,可以把登陸的幾行代碼封裝成函數(shù)login(p_user,p_pwd),做接口測試可以把常用的get和post方法封裝成 get(p_url)和post(p_url,p_data)。在這里我會詳細(xì)的講解python中關(guān)于函數(shù)的基礎(chǔ)知識,最后以selenium 進(jìn)行百度搜索為例來講解自動化測試中如何把具體業(yè)務(wù)封裝成方法實現(xiàn)代碼復(fù)用,相信大家一定會有所收獲!

創(chuàng)新互聯(lián)是專業(yè)的蘭山網(wǎng)站建設(shè)公司,蘭山接單;提供成都網(wǎng)站設(shè)計、做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行蘭山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
?函數(shù)基礎(chǔ)知識
函數(shù)的本質(zhì)就是代碼復(fù)用,在面向?qū)ο笾邪押瘮?shù)稱為方法。Python提供了許多內(nèi)建函數(shù),比如
print()。我們也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。以下是函數(shù)定義的簡單規(guī)則:
- 函數(shù)代碼塊以def關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號()。
- 圓括號之間用于定義參數(shù)。
- 函數(shù)內(nèi)容以冒號起始,并且縮進(jìn)。
- return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回None
例如:
- def func():
- print("函數(shù)實例")
- func()
輸出結(jié)果是:
函數(shù)實例
函數(shù)的參數(shù)
形參和實參
定義一個帶參數(shù)的函數(shù),如下:
- def func_para(p_str):
- print(p_str)
在函數(shù)func_para中,p_str就是一個形參,也就是形式參數(shù),是用來接收調(diào)用函數(shù)時傳入的參數(shù),你傳的是什么它就是什么。實參就是實際參數(shù),在調(diào)用函數(shù)的時候,傳遞是Kevin,那么Kevin就是實參,傳遞的是Mike,那么Mike也是實參,實參傳遞給函數(shù)后,會賦值給函數(shù)中的形參
把實參Kevin,賦值給函數(shù),即func_para(“Kevin”),輸出結(jié)果是Kevin
把實參Mike,賦值給函數(shù),即func_para(“Mike”),輸出結(jié)果是Mike
函數(shù)的返回值
調(diào)用方運行函數(shù)會得到一個值。首先說明,所有的函數(shù)都是有返回值的,如果編程人員沒有指定返回值,那默認(rèn)會返回None。
例如:
- def func_return(p_str):
- return p_str
- str=func_return (“Kevin”)print(str)
運行結(jié)果
Kevin
函數(shù)高級用法
以上是python中函數(shù)最基礎(chǔ)的定義,相信絕大多數(shù)同學(xué)都知道,接下來我會給大家介紹一些在python中函數(shù)的高級用法
參數(shù)的默認(rèn)值
python允許我們給函數(shù)的形參設(shè)置一個默認(rèn)值,不傳參數(shù)調(diào)用的話,就統(tǒng)一默認(rèn)是這個值。
- def func_default(name='kevin'):
- print("名字是"+name)
- func_default()
- func_default("mike")
輸出:
名字是kevin
名字是mike
關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)讓你可以不用考慮函數(shù)的參數(shù)位置,你需以鍵值對的形式指定參數(shù)的對應(yīng)形參。
- def func_key(name,age):
- print("你好"+ name+", 你的年齡是"+age+" !")
- func_key(age='38',name='kevin')
輸出:
你好kevin, 你的年齡是38 !
不固定長度參數(shù)
有時候我們需要允許用戶提供任意數(shù)量的參數(shù),函數(shù)的形參可以帶個星號來接收,不管調(diào)用函數(shù)的時候傳遞了多少實參,都將被收集到形參這個變量當(dāng)中,形參的類型是元組。例如:
- def fun_unfixedlength_1 (*args):
- print(args)fun_unfixedlength_1 ('kevin','38','67674297')
輸出
('kevin', '38', '67674297')
還有一種是帶兩個星號的形參,用于接收鍵值對形式的實參,導(dǎo)入到函數(shù)中的類型是字典。
- def fun_unfixedlength_2 (**args):
- print(args)fun_unfixedlength_2(name='kevin',age='38',qq='67674297')
輸出
{'name': 'kevin', 'age':'38', 'qq': '67674297'}
匿名函數(shù)
匿名函數(shù)就是不用走正常函數(shù)定義的流程,可以直接定義一個簡單的函數(shù)并把函數(shù)本身賦值給一個變量,使得這個變量可以像函數(shù)一樣被調(diào)用,在python中可以用lambda關(guān)鍵字來申明定義一個匿名函數(shù)。例如
- lambda_demo = lambda first_name,last_name : first_name + " "+last_name
- name = lambda_demo('kevin','li')
- print(name)
輸出kevin li
函數(shù)實際應(yīng)用
最后我結(jié)合ui自動化測試給大家舉一個函數(shù)在測試工作中的實際應(yīng)用。我們以selenium 進(jìn)行百度搜索為例,selenium的核心代碼如下:
- driver.get("https://www.baidu.com/")
- driver.find_element_by_id("kw").clear()
- driver.find_element_by_id("kw").send_keys("selenium") #輸入框輸入selenium
- driver.find_element_by_id("su").click() #點擊搜索按鈕
備注:我的頭條中有很多文章講解了關(guān)于selenium應(yīng)用的具體方法,在這里就不再贅述了??梢詤⒖迹?/p>
一文搞定Java和Python在Selenium3中的應(yīng)用
Selenium原理精講
場景分析:由于搜索的關(guān)鍵字是千變?nèi)f化的,而進(jìn)行搜索的動作是固定的,即:打開百度網(wǎng)頁>在輸入框輸入關(guān)鍵字>點擊百度一下搜索按鈕。所以我們可以把該場景編寫為函數(shù),用一個函數(shù)來處理進(jìn)行各種關(guān)鍵字搜索的需求。核心代碼實現(xiàn)如下:
- def baidu_search(p_key):
- driver.get("https://www.baidu.com/")
- driver.find_element_by_id("kw").clear()
- driver.find_element_by_id("kw").send_keys(p_key) # 輸入框輸入selenium
- driver.find_element_by_id("su").click() # 點擊搜索按鈕
如果大家想通過函數(shù)來檢查是否找到了需要搜索的關(guān)鍵字,那么可以對函數(shù)進(jìn)行改進(jìn),如果在搜索結(jié)果頁面中出現(xiàn)了“百度為您找到相關(guān)結(jié)果約*個”的文字證明搜索到了關(guān)鍵字返回True,否則返回
False,如下圖所示:
改進(jìn)后的代碼方法如下:
- def baidu_search(p_key):
- driver.get("https://www.baidu.com/")
- driver.find_element_by_id("kw").clear()
- driver.find_element_by_id("kw").send_keys(p_key) # 輸入框輸入selenium
- driver.find_element_by_id("su").click() # 點擊搜索按鈕
- time.sleep(3)
- try:
- result=driver.find_elements_by_class_name("nums_text").get_attribute('value') #獲取搜索結(jié)果的統(tǒng)計個數(shù)值,默認(rèn)是:百度為您找到相關(guān)結(jié)果約...個
- if re.match('百度為您找到相關(guān)結(jié)果約.*個', result)is None: #通過正則進(jìn)行匹配,沒匹配到正則返回None
- return False
- else:
- return True
- exceptNoSuchElementException as e:
- return False
- return True
標(biāo)題名稱:進(jìn)階Python,從編寫Python函數(shù)開始
文章位置:http://m.5511xx.com/article/cdogdgj.html


咨詢
建站咨詢
