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

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


咨詢(xún)
建站咨詢(xún)
