67道 Python自动化面试题
1、自動(dòng)化代碼中,用到了哪些設(shè)計(jì)模式?
- 單例設(shè)計(jì)模式
- 工廠模式
- PO設(shè)計(jì)模式
- 數(shù)據(jù)驅(qū)動(dòng)模式
- 面向接口編程設(shè)計(jì)模式
2、什么是斷言( Assert) ?
- 斷言Assert用于在代碼中驗(yàn)證實(shí)際結(jié)果是不是符合預(yù)期結(jié)果,
- 如果測(cè)試用例執(zhí)行失敗會(huì)拋出異常并提供斷言日志
3、什么是web自動(dòng)化測(cè)試
- Web自動(dòng)化測(cè)試是從UI (用戶界面)層面進(jìn)行的自動(dòng)化測(cè)試,
- 測(cè)試人員通過(guò)編程自動(dòng)化程序(測(cè)試用例腳本)來(lái)打開瀏覽器測(cè)試網(wǎng)站的業(yè)務(wù)邏輯。
4、什么是Selenium?
- Selenium是一個(gè)開源的web自動(dòng)化測(cè)試框架,支持多種編程語(yǔ)言開發(fā)自動(dòng)化測(cè)試腳本,支持跨瀏覽器平臺(tái)進(jìn)行測(cè)試
5、寫出Selenium中你最熟悉的接口或類
- WebDriver、InternetExplorerDriver、 FirefoxDriver、 ChromeDriver、 WebElement、WebDriverWait、 By
6、元素定位類型有哪些?
By類一共有8種元素定位方式,它們都是靜態(tài)方法:
- By.id():
- By.name():
- By.tagName():
- By.className():
- By.cssSelector():
- By linkText():
- By partialLinkText():
- By.xpath():
7、Xpath是什么?
- 它是查找web頁(yè)面元素的一種方式,相當(dāng)于元素在dom中間的一個(gè)路徑,可以采用絕對(duì)路徑和相對(duì)路徑的方式進(jìn)行定位
- 它對(duì)于定義動(dòng)態(tài)的頁(yè)面元素有很大的幫助,同時(shí)也需要謹(jǐn)慎使用,因?yàn)槿绻?yè)面結(jié)構(gòu)發(fā)生變化,那么定位信息也可能需要變化。
8、findElement()和findElements(方法有什么區(qū)別
- 兩個(gè)都是查找頁(yè)面元素的方法
- findElement():查找一個(gè)頁(yè)面元素,只會(huì)返回一個(gè)WebElement對(duì)象
- findElements() :查找頁(yè)面上所有符合匹配的元素,返回元素集合
9、登錄按鈕除了用click方法進(jìn)行點(diǎn)擊以外還有其他方式嗎?
- 還可以使用submit()方法,前提是input元素的type為submit
10、怎么提高Selenium腳本的執(zhí)行速度
- 優(yōu)化等待時(shí)間:使用 WebDriverWait 智能等待來(lái)代替線程等待 sleep 和 隱式等待 implicityWait
- 減少不必要的操作:如直接進(jìn)入某頁(yè)面代替經(jīng)過(guò)一系列自動(dòng)化操作進(jìn)入某頁(yè)面在服務(wù)器允許的情況下,使用多線程實(shí)現(xiàn)并發(fā)執(zhí)行測(cè)試用例.
11、怎么對(duì)含有驗(yàn)證碼的功能進(jìn)行自動(dòng)化測(cè)試的
- :圖像識(shí)別,技術(shù)難度大,效果不佳,不推薦
- :屏蔽驗(yàn)證碼,邀請(qǐng)開發(fā)處理,但在預(yù)生產(chǎn)環(huán)境或者生產(chǎn)環(huán)境不推薦
- :萬(wàn)能驗(yàn)證碼,使用一個(gè)復(fù)雜的其他人無(wú)法猜到的驗(yàn)證碼
12、怎么驗(yàn)證復(fù)選按鈕是不是被選中
- 可以使用元素的 isSelected() 方法,如果返回的是 true 則說(shuō)明被選中,否則表明未被選中
13、如何處理alert彈窗?
- 處理 alert 彈窗首先需要先跳轉(zhuǎn)到 alert 上,然后在點(diǎn)擊確定或者取消按鈕,
- Alert alert = driver.switchTo().alert(); //切換到alert
- alert.accept0; //確定
- alert.dismiss0; //取消
14、下拉菜單中如何去選擇一個(gè)菜單項(xiàng)?
- 如果下拉菜單是select標(biāo)簽,使用方法: selectByValue() 或者 selectByIndex() 或者 selectByVisibleText() 即可
- 如果這個(gè)下拉菜單不是通過(guò) select 標(biāo)簽創(chuàng)建,則直接通過(guò) xpath 定位元素然后去點(diǎn)擊選擇
15、如何模擬瀏覽器的前進(jìn)和后退、刷新操作
- driver.navigate().back()://后退
- driver. navigate().forward()://前進(jìn)
- driver.navigate0.efresh()://刷新
16、怎么獲得當(dāng)前頁(yè)面的URL?
- String url = driver.getCurrentUrl();
17、WebDriver的close()和quit(方法的區(qū)別是什么?
- close()方法只是關(guān)閉當(dāng)前正在操作的窗口
- quit()是關(guān)閉了所有已經(jīng)打開的窗口
18、你覺(jué)得自動(dòng)化測(cè)試用哪些缺陷
- 成本比較大,而成效可能并不高
- 適合自動(dòng)化測(cè)試的功能有限
- 某些功能操作相對(duì)復(fù)雜,比如驗(yàn)證碼
- 維護(hù)成本高,一旦項(xiàng)目需求變更,自動(dòng)化測(cè)試腳本和用例就需要改進(jìn)
19、Web端功能自動(dòng)化,如何實(shí)現(xiàn)(非input型上傳)上傳文件
- 與windows窗口進(jìn)行交互,可以使用 pywin32庫(kù) 實(shí)現(xiàn)。
20、遇到<d1 class="inf-bar clearfix"> 這種class中間有空格的控件,如何通過(guò)class定位?
- xpath定位:直接//d1 [@class=“inf_bar clearfx”]
- css定位: d1.inf_bar.clearfix
21、Selenium自動(dòng)化,遇到 iframe 如何處理?
- 使用switch_ to.frame 切換進(jìn) iframe 當(dāng)中后 ,再去定位其中的元素并操作
22、Web端功能自動(dòng)化中,如何切換句柄。
- 先獲取所有窗口句柄,然后使用 switch_ to.window() 切換到指定窗口
23、測(cè)試中遇到 readonly 屬性的控件,需要如何處理?簡(jiǎn)述一下思路
- 先修改關(guān)閉r eadonly 屬性,然后再操作元素。
需求:給定一個(gè)只包含正整數(shù)且非空的數(shù)組,返回該數(shù)組中重復(fù)次數(shù)最多的前N個(gè)數(shù)字(返回結(jié)果按重復(fù)次數(shù)從多到少降序), 請(qǐng)用熟悉的語(yǔ)言實(shí)現(xiàn)該需求。10分鐘內(nèi)寫出來(lái)
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' a = [1, 6, 7, 4, 4, 5, 4, 5, 4, 5, 5, 6, 7, 8, 5, 6, 7, 3, 4, 2, 2, 1, 4, 8, 9, 4, 5, 6]def get_datas(a):result = []data_dict = {}# 鍵值對(duì):鍵:數(shù)字,值:在列表中的次數(shù)for item in set(a):data_dict[str(item)] = a.count(item)print(data_dict)# 將鍵值對(duì)按值(數(shù)字出現(xiàn)的次數(shù))排序 ---從高到低排序res = sorted(data_dict.values(),reverse=True)for num in res:for key,value in data_dict.items():# 如果值在列表中不存在,則添加到結(jié)果列表中if num == value and key not in result:result.append(key)return resulta1 = get_datas(a)執(zhí)行結(jié)果:
25、例如: passwd={"admin'":"123321","user1":" 123456"}滿足一下條件?
- 1、設(shè)計(jì)一個(gè)登陸程序,不同的用戶名和對(duì)應(yīng)密碼存在一一個(gè)字典里面,輸入正確的用戶和密碼去登陸,
- 2、首先輸入用戶名,如果用戶名不存在或者為空,則一直提示輸入正確的用戶名
- 3、 當(dāng)用戶名正確的時(shí)候,提示去輸入密碼,如果密碼跟用戶名不對(duì)應(yīng),則提示密碼錯(cuò)誤請(qǐng)重新輸入。
- 4、如果密碼輸入錯(cuò)誤超過(guò)三次,中斷程序運(yùn)行。
- 5、當(dāng)輸入密碼錯(cuò)誤時(shí),提示還有幾次機(jī)會(huì)
- 6、用戶名和密碼都輸入成功的時(shí)候, 提示登陸成功!
26、編寫一個(gè)程序:—沒(méi)弄懂
1、能在當(dāng)前目錄以及當(dāng)前目錄的所有子目錄下查找文件名包含指定字符串的文件;
2、并打印出相對(duì)路徑。
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' import ospaths = []def get_paths(dir, relate_dir=None, search_str=None):global pathsif search_str == None:return os.listdir(dir)for item in os.listdir(dir):if relate_dir == None:relate_dir == os.curdirif os.path.isfile(os.path.join(dir, item)):if item.find(search_str) != -1:paths.append(os.path.join(relate_dir, item))elif os.path.isdir(os.path.join(dir, item)):paths = get_paths(os.path.join(dir, item), os.path.join(relate_dir, item), search_str)return pathsdir = os.getcwd() search_str = "fun" print(get_paths(dir, search_str=search_str))27、請(qǐng)寫出下列代碼的運(yùn)行結(jié)果
def f(str1, *args, **kwargs):print(str1, args, kwargs)l = [1, 2, 3] t = [4, 5, 6] d = {"a": 7, "b": 8, "c": 9}f(1, 2) f(1, 2, 3, "python") f("python", l, d) f("python", *t) f("python", *l, **d) f("python", q="winning", **d)執(zhí)行結(jié)果:
1 (2,) {} 1 (2, 3, 'python') {} python ([1, 2, 3], {'a': 7, 'b': 8, 'c': 9}) {} python (4, 5, 6) {} python (1, 2, 3) {'a': 7, 'b': 8, 'c': 9} python () {'q': 'winning', 'a': 7, 'b': 8, 'c': 9}28、請(qǐng)寫下列代碼的運(yùn)行結(jié)果
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' import copya = [1, 2, 3, 4, ["a", "b"]] b = a c = copy.copy(a) d = copy.copy(a) a.append(5) a[4].append("c")# 請(qǐng)根據(jù)以上規(guī)則填寫一下輸出內(nèi)容 print('a=', b) print('b=', b) print('c=', c) print('d=', d)執(zhí)行結(jié)果:
a= [1, 2, 3, 4, ['a', 'b', 'c'], 5] b= [1, 2, 3, 4, ['a', 'b', 'c'], 5] c= [1, 2, 3, 4, ['a', 'b', 'c']] d= [1, 2, 3, 4, ['a', 'b', 'c']]29、等長(zhǎng)的兩個(gè)列表合并到一個(gè)字典,要求:合并成{‘A’: 1, ‘B’: 2, ‘C’: 3},請(qǐng)用一行代碼實(shí)現(xiàn)
keys = ["A", "B", "C"] values = ["1", "2", "3"] print(dict(zip(keys, [int(x) for x in values])))30、合并兩個(gè)列表并消除重復(fù)值
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' list_1 = ["a", "b", "c", "1", "A", "winning"] list_2 = ["a", "python", "string"] print(set(list_1 + list_2)) # 執(zhí)行結(jié)果:{'c', 'winning', '1', 'string', 'b', 'a', 'python', 'A'}31、已知一個(gè)列表,根據(jù)字典中的x ,由大到小排序這個(gè)列表
a = [{"x": 1, "y": 2}, {"x": 2, "y": 3}, {"x": 3, "y": 4}] aa1 = sorted(a, key=lambda item: item["x"], reverse=True) print(aa1) # 執(zhí)行結(jié)果:[{'x': 3, 'y': 4}, {'x': 2, 'y': 3}, {'x': 1, 'y': 2}]32、Html的基本結(jié)構(gòu)是怎么樣的,如何繪制一個(gè)2X2的表格
<html> <head> <title>兩行量列的表格</title> -<head> <body> <tatle width="200" border="1"> <tr><td> </td> <td> </td> -</tr> <td> </td> <td> </td> -</tr> -</table> -</body></html>33、寫出語(yǔ)句打印" let’s go", she said
print("\"let's go\",she said")34、請(qǐng)寫一段代碼,隨機(jī)生成10個(gè)數(shù)并寫入文件
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' import randomfs = open("num.txt", "a") list1 = [] for index in range(10):num = random.randint(0, 10)list1.append(str(num))print(list1) fs.write(",".join(list1)) fs.close()執(zhí)行結(jié)果:
35、請(qǐng)分別寫出代碼執(zhí)行結(jié)果
a = 1def fun(a):a = 2fun(a) print(a) # 執(zhí)行結(jié)果:1===============
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' b = []def fun(b):b.append(1)fun(b) print(b)執(zhí)行結(jié)果:[1]36、自動(dòng)化測(cè)試分為哪幾類:AB
- A,UI自動(dòng)化
- B,接口自動(dòng)化
- C, Web自動(dòng)化
- D,終端自動(dòng)化
37、什么是會(huì)話?
- 所謂會(huì)話就是session ,而session是一種服務(wù)器的緩存技術(shù),由服務(wù)器端創(chuàng)建,
- 用戶登錄了系統(tǒng),一般就會(huì)把登錄用戶的信息保存到這個(gè)session對(duì)象中,然后把此會(huì)話對(duì)應(yīng)的id ( JSESSIONID )返回,
- 因此大部分系統(tǒng)都會(huì)用到session機(jī)制來(lái)實(shí)現(xiàn)鑒權(quán)。Session保存數(shù)據(jù)方式也是以key-value的形式。
38、什么是token?
- 所謂token其實(shí)就是服務(wù)器端返回的一個(gè)字符串(有點(diǎn)類似于: xys73494954sdhcdr83435這么一串),這個(gè)數(shù)據(jù)是基于什么算法生成的需要找開發(fā)確認(rèn),一般這個(gè)數(shù)據(jù)是唯一的,服務(wù)器每次返回的token都會(huì)不一樣。
Token之所以可以用來(lái)做鑒權(quán),原理如下:
- 用戶 a 調(diào)用了登錄接口 —》登錄了系統(tǒng)b —》服務(wù)器端生成了一個(gè)唯一的 token 信息(假設(shè)為c) ,
- 然后會(huì)拿用戶的編號(hào)id(假設(shè)為d)做了一個(gè)映射:c - d,
- 然后將這樣的映射關(guān)系存到數(shù)據(jù)庫(kù)或 redis 等緩存中,
- 然后再返回這個(gè)token給客戶端 —》客戶端再調(diào)用其他需要鑒權(quán)的接口時(shí),
- 只需要將緩存起來(lái)的這個(gè)token帶過(guò)去驗(yàn)證 --》服務(wù)器根據(jù)此token檢查是否有登錄用戶信息來(lái)判斷此請(qǐng)求是否是一個(gè)已登錄授權(quán)的用戶。( 這里客戶端怎么取到這個(gè)token ,怎么存,再次請(qǐng)求時(shí)怎么帶過(guò)去,上面接口鑒權(quán)部分已解釋)。
39、你做接口自動(dòng)化,項(xiàng)目用的是什么數(shù)據(jù)庫(kù),用什么來(lái)操作的這個(gè)數(shù)據(jù)庫(kù)
- Mysql ,可以通過(guò)jdbc來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪查改等操作。
40、你用過(guò)單元測(cè)試框架嗎,是什么框架,有哪些常用注解
- 用過(guò), junit (不熟的話就可以不用說(shuō)) , testng ,這些測(cè)試框架都支持我們?nèi)ザx測(cè)試套件,達(dá)到管理我們測(cè)試用例代碼的作用,同時(shí)這些測(cè)試框架提供的一些豐富注解不僅能很方便的控制測(cè)試用例的執(zhí)行順序來(lái)控制整個(gè)測(cè)試流程,還能為各種測(cè)試場(chǎng)景的實(shí)現(xiàn)提供支撐。
常用注解:
- @Test ,用來(lái)標(biāo)記測(cè)試方法
- @BeforeSuite ,適合套件的全局初始化,在整個(gè)套件執(zhí)行前先執(zhí)行
- @BeforeTest ,適合Test測(cè)試集的初始化,在測(cè)試集執(zhí)行前先執(zhí)行
- @BeforeClass ,適合Class測(cè)試類的初始化,在測(cè)試類被調(diào)用時(shí)執(zhí)行
- @BeforeMethod ,適合測(cè)試方法執(zhí)行前的初始化,在測(cè)試方法前先執(zhí)行
- @After… ,對(duì)比上面的來(lái)回答, 執(zhí)行順序跟上面的剛好相反,作用適合做一些回收資源。
- @Parameters :參數(shù)化注解,方便實(shí)現(xiàn)參數(shù)化
- @DataProvider :數(shù)據(jù)提供者,可以用來(lái)提供測(cè)試用的批量測(cè)試數(shù)據(jù)
41、說(shuō)說(shuō)你對(duì)接口的理解
- 接口是服務(wù),是功能點(diǎn)實(shí)現(xiàn),是數(shù)據(jù)傳遞的通道,也是服務(wù)器端的一個(gè)實(shí)現(xiàn)了某種協(xié)議(比如http協(xié)議… )和映射機(jī)制(當(dāng)訪問(wèn)一個(gè)urlI時(shí)就會(huì)通過(guò)服務(wù)器端的映射處理機(jī)制解析后,落到對(duì)應(yīng)的處理函數(shù))的函數(shù),接口參數(shù)就是函數(shù)的參數(shù),接口的響應(yīng)數(shù)據(jù)就是函數(shù)的返回值。
41、做過(guò)接口測(cè)試嗎,有哪些熟悉的工具。
- 做過(guò)(即時(shí)你之前沒(méi)有用過(guò)可視化工具做過(guò)接口測(cè)試,但你現(xiàn)在學(xué)了接口自動(dòng)化測(cè)試就算有經(jīng)驗(yàn)了)。
熟悉的工具:
- 可視化工具比如: jmeter,postman , soapui等(用過(guò)哪些說(shuō)哪些)
- 代碼: httpclient發(fā)包技術(shù)來(lái)實(shí)現(xiàn)接口測(cè)試。
42、工具已經(jīng)可以完成自動(dòng)化測(cè)試了,為啥還要用到代碼去完成?
- 工具做自動(dòng)化測(cè)試依賴和局限性和強(qiáng),有些工具提供了斷言方法和表達(dá)式,但是上手成本高,而且已經(jīng)提供的現(xiàn)有的斷言表達(dá)式可能無(wú)法滿足某些特殊規(guī)則的數(shù)據(jù)驗(yàn)證,而代碼的話就相當(dāng)靈活更多,斷言方式可以隨便按照自己的想法去設(shè)計(jì)。
43、請(qǐng)簡(jiǎn)單說(shuō)一說(shuō)get、post這 兩種請(qǐng)求方法的區(qū)別?
Get :
- a. 一般對(duì)于從服務(wù)器取數(shù)據(jù)的請(qǐng)求可以設(shè)置為get方式
- b.Get方式在傳遞參數(shù)的時(shí)候,一般都會(huì)把參數(shù)直接拼接在url上(例如:http://xxx?id=1&type=2 )
- c.Get請(qǐng)求方法可以傳遞的參數(shù)數(shù)據(jù)量是有限的(因?yàn)橐话銋?shù)是拼接在url上,而瀏覽器對(duì)于url的長(zhǎng)度是有限制的)
- d.Get請(qǐng)求因?yàn)槭侵苯訉?shù)據(jù)拼接在url上,所以安全性不如post強(qiáng)(相對(duì)) , 但是get的執(zhí)行效率要快于post
Post :
- a.一般往服務(wù)器提交數(shù)據(jù)的請(qǐng)求會(huì)設(shè)置為post方式
- b.Post方式傳遞參數(shù)一般都會(huì)把參數(shù)放在請(qǐng)求體,而不會(huì)拼接在url
- c.Post請(qǐng)求方法可以提交的數(shù)據(jù)量不受限制
- d.Post請(qǐng)求傳參相對(duì)于get要安全(相對(duì)不是絕對(duì)) , 但是post的執(zhí)行效率不如get。
44、簡(jiǎn)述你所知道的延時(shí)等待方式
強(qiáng)制等待:
- 也叫線程等待, 通過(guò)線程休眠的方式完成的等待,如等待5秒: Thread sleep(5000),
隱式等待:
- 通過(guò)implicitly Wait完成的延時(shí)等待,注意這種是針對(duì)全局設(shè)置的等待,如設(shè)置超時(shí)時(shí)間為10秒,使用了implicitlyWait后,如果第一次沒(méi)有找到元素,會(huì)在10秒之內(nèi)不斷循環(huán)去找元素,如果超過(guò)10秒還沒(méi)有找到,則拋出異常
顯式等待:
- 也稱為智能等待,針對(duì)指定元素定位指定等待時(shí)間,在指定時(shí)間范圍內(nèi)進(jìn)行元素查找,找到元素則直接返回,如果在超時(shí)還沒(méi)有找到元素,則拋出異常
45、輸出結(jié)果是什么?
def f(x, l=[]):for i in range(x):l.append(i * i)print(l) f(2) f(3, [3, 2, 1]) f(3)結(jié)果: [0] [0, 1] [3, 2, 1, 0] [3, 2, 1, 0, 1] [3, 2, 1, 0, 1, 4] [0, 1, 0] [0, 1, 0, 1] [0, 1, 0, 1, 4]46、你是怎么做接口自動(dòng)化的?
- 參考答案:會(huì)根據(jù)接口文檔設(shè)計(jì)接口用例,然后利用 python 的 requests 庫(kù)實(shí)現(xiàn)接口請(qǐng)求,利用excel來(lái)管理測(cè)試數(shù)據(jù)。并在代碼當(dāng)中利用 unittest 測(cè)試框架實(shí)現(xiàn)接口用例的斷言處理。
47、如何用webdriver進(jìn)行鼠標(biāo)右鍵點(diǎn)擊操作?
使用ActionChains類
ac= ActionChains(driver);
ac.context _click(元素對(duì)象).perform()
48、你在寫自動(dòng)化框架的時(shí)候,測(cè)試用例保存到哪里?用什么去讀取?
- 測(cè)試用例保存到Excel中,使用第三方庫(kù)openpyxI完成對(duì)Excel的操作
49、用python寫一段代碼,計(jì)算1-1000以內(nèi)能被7整除,除以5余3的整數(shù),并按行打印
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' for i in range(1, 1000):if i % 7 == 0 and i % 5 ==3:print(i)執(zhí)行結(jié)果: 28 63 98 133 168 ........50、小明有一百元,他想買一百本書,英語(yǔ)書5元一本,數(shù)學(xué)書3元一本,語(yǔ)文書0.5元一本,請(qǐng)問(wèn)他有多少種買法。請(qǐng)編程解決這個(gè)問(wèn)題,可以使用任何編程語(yǔ)言,包括偽語(yǔ)言。
根據(jù)題意是要買一百本書,一百塊錢,看有多少種買法(錢不一定非要花完 ,只要能買到一百本書) :
三本書的價(jià)格分別為: 5,3,0.5,那么能買到最多的數(shù)學(xué)書為20本,英語(yǔ)書33本,語(yǔ)文書200本。但是也有組合的買法,所以可以通過(guò)一個(gè)三重for循環(huán)來(lái)實(shí)現(xiàn), ijk分別代表購(gòu)買數(shù)學(xué),英語(yǔ),語(yǔ)文書的數(shù)量,循環(huán)條件分別是i<=20,j<=33,k<=200,那么只要滿足 i+j+k == 100,5i+3j+0.5*k<= 100即可。最后統(tǒng)計(jì)所有的組合就是買法的數(shù)量。
n = 0 for i in range(21):for j in range(34):for k in range(201):if 5 * i + 3 * j + k * 0.5 <= 100 and i + j + k == 100:n += 1 print(n)51、使用monkey測(cè)試到了bug怎么提交的?
- monkey對(duì)APP進(jìn)行我們?cè)跍y(cè)試的時(shí)候,會(huì)利用adb shell monkey-p包名-f腳本-V-V -v >D:log.txt把日志輸出到本地,并且將出現(xiàn)錯(cuò)誤時(shí)候的日志截圖,把日志截圖以及bug描述提交到禪道,指派給對(duì)應(yīng)的開發(fā)。但是在提交bug之前會(huì)手動(dòng)去重現(xiàn)下這個(gè)bug。
52、在一個(gè)HTML頁(yè)面中想要?jiǎng)?chuàng)建超鏈接, 有哪種實(shí)現(xiàn)方法?
- 超鏈接:<a href="網(wǎng)址”target=". blank">內(nèi)容</a>
- target="_ blank"為新窗口打開。
- JS跳轉(zhuǎn)鏈接:<a href="#" onclick="javascript:location.href='網(wǎng)址";">內(nèi)容</a>
- meta 標(biāo)簽跳轉(zhuǎn)鏈接:<meta http-equiv="refresh" content="3;URL =網(wǎng)址">
- (數(shù)字3為秒)
53、下面哪些關(guān)于自動(dòng)化測(cè)試的說(shuō)法是錯(cuò)誤的: (ABCD )
A、自動(dòng)化測(cè)試可以完全取代手工測(cè)試
B、自動(dòng)化測(cè)試可以大幅度減少測(cè)試團(tuán)隊(duì)的工作量
C、性能測(cè)試不能自動(dòng)化
D、自動(dòng)化測(cè)試能夠發(fā)現(xiàn)大量的新缺陷
Python中自定義的函數(shù)如何傳遞動(dòng)態(tài)參數(shù)?
- 參數(shù)使用args或者*kwargs*
55、什么是lambda函數(shù)?它有什么好處?
- lambda函數(shù):沒(méi)有函數(shù)名稱,是匿名函數(shù)。
- 好處:只做簡(jiǎn)單運(yùn)算,接收任何多參數(shù)并返回值,沒(méi)有復(fù)雜的函數(shù)體。可以作為回調(diào)函數(shù),傳遞給某些應(yīng)用,比如消息處理.
56、Python語(yǔ)言中子類如何調(diào)用父類的構(gòu)造函數(shù)?
- 如果子類沒(méi)有定義構(gòu)造函數(shù),則子類默認(rèn)會(huì)調(diào)用父類的構(gòu)造函數(shù);
- 如果子類定義了構(gòu)造函數(shù),那么在子類的構(gòu)造函數(shù)中,調(diào)用父類的構(gòu)造函數(shù): python3中,使用super()._ init _()
57、已知L = [“a”, “b”, “c”, “d”, “e”, “f”, “g”],則L[3]的值是_ L[::5]的值是__L[::2]值是_
L = ["a", "b", "c", "d", "e", "F", "g"]print(L[3]) print(L[::5]) print(L[::2])執(zhí)行結(jié)果: d ['a', 'F'] ['a', 'c', 'e', 'g']58、已知列表x=[1, 2],那么表達(dá)式 list(enumerate(x)) 的值
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' x = [1, 2] a1 = list(enumerate(x)) print(a1) # 執(zhí)行結(jié)果:[(0, 1), (1, 2)]59、查看變量類型的python內(nèi)置函數(shù)是 type
60、查看變量?jī)?nèi)存地址的python函數(shù)是 id
61、表達(dá)式sum(range(1, 10, 2)) 的值為25
print(sum(range(1, 10, 2))) # 各兩位取一個(gè)之和:1,3,5,7,9 # 執(zhí)行結(jié)果:2562、Python的有序序列是:列表、元祖、字符
小飛飛買好多瓶子,每對(duì)瓶子上會(huì)有一個(gè)相同的數(shù)字。小飛飛數(shù)了一遍自己的瓶子發(fā)現(xiàn)瓶子的個(gè)數(shù)是奇數(shù)N ,也就是有-個(gè)沒(méi)有配對(duì)的瓶子。現(xiàn)在小飛飛要去再拿一個(gè)新瓶子,請(qǐng)問(wèn)他給新瓶子要標(biāo)幾號(hào)才能讓所有瓶子都有配對(duì)的。比如說(shuō)他有七個(gè)瓶子( N=7 ),那么標(biāo)號(hào)可以是:1,6,13,1,6,13,13
那么新瓶子就要標(biāo)記為13,加入后就有(1,1),(6,6),(13,13),(13,13 )這4對(duì)
輸入:測(cè)試數(shù)據(jù)的第一行一個(gè)正整數(shù) N (1<=N<=1000 )表示有N個(gè)數(shù), N保證是奇數(shù),第二行N個(gè)自然數(shù),每個(gè)數(shù)都小于10^9
輸出:輸出一行一個(gè)整數(shù),新瓶子的號(hào)碼
樣例:
- 輸入:
- 9
- 121233441
- 輸出:1
63、用python寫一個(gè)函數(shù),將一個(gè)字符串中給定的子串字符按從小到大的輸出,第一個(gè)字符的位置為0
- 如: myOrder( abejykhsesm’,2,5)
- 輸出: ehjky
64、對(duì)輸入的整數(shù)數(shù)組,輸出數(shù)組元素中的最大值、最大值的個(gè)數(shù)、最小值和最小值的個(gè)數(shù)
函數(shù)名稱: max_ and_ min(list)
輸入?yún)?shù): list整數(shù)數(shù)組
輸出: list整數(shù)數(shù)組,有四個(gè)值,分別表示最大值、最大值的個(gè)數(shù)、最小值和最小值的個(gè)數(shù)
- 示例: max and. min([1,4,21,5,6,1,1]) => [21,1,1,3]
- max_ and. min(1]) => [1,1,1,1]
65、字符串右補(bǔ)齊,根據(jù)len長(zhǎng)度補(bǔ)齊str到src中
函數(shù)名稱: rpad(src,len,str)
輸入?yún)?shù)::src原字符串, len目標(biāo)字符串長(zhǎng)度, str用來(lái)填充的字符串
輸出:補(bǔ)齊后的字符串
示例:
- rpad (“abcd”,10,“12”) =>“abcd121212”
- rpad (“abcd”,11,“12”) =>“abcd1212121”
- rpad (“abcd”,10,“12”) =>"abcd121212”
- rpad (“abd”,12,“0”) =>*"bd0000000”
- rpad (“abcd”,12,") =>"abcd
66、基于Web端呈現(xiàn)的產(chǎn)品可以如何做自動(dòng)化測(cè)試,談?wù)勀愕乃悸泛头较颉?/h3>
參考:
- web端的自動(dòng)化測(cè)試,基本就是模擬手工測(cè)試人員來(lái)做功能測(cè)試。
- 用機(jī)器的自動(dòng)執(zhí)行代替人的操作。
- web端呈現(xiàn)的產(chǎn)品有兩個(gè)方向可以做自動(dòng)化測(cè)試:接口層和界面操作層,且接口層自動(dòng)化的比例要高于界面操作層。
- 并且主要對(duì)產(chǎn)品穩(wěn)定的功能進(jìn)行自動(dòng)化測(cè)試,主要用于產(chǎn)品的核心功能冒煙測(cè)試、回歸測(cè)試。
- 從系統(tǒng)最最核心的功能開始做,再根據(jù)情況慢慢鋪開。
67、請(qǐng)描述實(shí)現(xiàn)用戶登陸模擬自動(dòng)化測(cè)試的思路
參考:
基于用戶登陸的自動(dòng)化測(cè)試思路:
- 使用 python+selenium 框架來(lái)編寫登陸的所有測(cè)試用例,
- 使用unittest框架來(lái)組織測(cè)試用例。
- 使用Htmltestrunner來(lái)形成html版的測(cè)試報(bào)告,并使用郵件模塊來(lái)發(fā)送測(cè)試報(bào)告給項(xiàng)目組相關(guān)人員。
結(jié)尾給大家推薦一個(gè)非常好的學(xué)習(xí)教程,希望對(duì)你學(xué)習(xí)Python有幫助!
Python基礎(chǔ)入門教程推薦:更多Python視頻教程-關(guān)注B站:Python學(xué)習(xí)者
【Python教程】全網(wǎng)最容易聽懂的1000集python系統(tǒng)學(xué)習(xí)教程(答疑在最后四期,滿滿干貨)
Python爬蟲案例教程推薦:更多Python視頻教程-關(guān)注B站:Python學(xué)習(xí)者
2021年P(guān)ython最新最全100個(gè)爬蟲完整案例教程,數(shù)據(jù)分析,數(shù)據(jù)可視化,記得收藏哦
總結(jié)
以上是生活随笔為你收集整理的67道 Python自动化面试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python 中set集合类型(去重、成
- 下一篇: Python 必背的42个常见单词,看看