一、編程語(yǔ)法題
1
、
python
有哪些數(shù)據(jù)類型
python 數(shù)據(jù)類型有很多,基本數(shù)據(jù)類型有整型(數(shù)字)、字符串、元組、列表、
字典和布爾類型等
2
、怎么將兩個(gè)字典合并
調(diào)用字典的 update 方法,合并 2 個(gè)字典。
3
、
json.l
python
如何將
json
寫(xiě)到文件里?
oads() 是將字符串傳化為字典
json.load()是將文件打開(kāi)從字符串轉(zhuǎn)換成數(shù)據(jù)類型
json.dumps () 是將字典轉(zhuǎn)化為字符串
json.dump()是將數(shù)據(jù)類型轉(zhuǎn)換成字符串并存儲(chǔ)在文件中
4
、
__init__
和
__new__
區(qū)別?
·__new__是在實(shí)例創(chuàng)建之前被調(diào)用的,因?yàn)樗娜蝿?wù)就是創(chuàng)建實(shí)例然后返回該
實(shí)例對(duì)象,是個(gè)靜態(tài)方法。
·
__init__是當(dāng)實(shí)例對(duì)象創(chuàng)建完成后被調(diào)用的,然后設(shè)置對(duì)象屬性的一些初始值,
通常用在初始化一個(gè)類實(shí)例的時(shí)候。是一個(gè)實(shí)例方法。
5
、什么是可變、不可變類型?
·可變數(shù)據(jù)類型:列表 list 和字典 dict;
·不可變數(shù)據(jù)類型:整型 int、浮點(diǎn)型 float、字符串型 string 和元組 tuple
6
、
mysql
注入點(diǎn),用工具對(duì)目標(biāo)站直接寫(xiě)入一句話,需要哪些條件?
mysql 寫(xiě)入一句話需要具備
1.secure-file-priv='',即:my.ini 文件,打開(kāi)找到 secure-file-priv 參數(shù)
改空
2.當(dāng)前用戶具備 root 權(quán)限
3.已獲取到應(yīng)用程序的絕對(duì)路徑,且目錄可以進(jìn)行文件寫(xiě)入操作。
7
、
python
深淺拷貝的區(qū)別
對(duì)于不可變數(shù)據(jù)來(lái)說(shuō)深淺拷貝的結(jié)果一致會(huì)重新創(chuàng)一個(gè)數(shù)據(jù)的副本。淺拷貝對(duì)于
可變類型來(lái)說(shuō)只會(huì)拷貝其元素的引用。
深拷貝對(duì)于可變?cè)貋?lái)說(shuō)會(huì)遞歸的整個(gè)重新創(chuàng)建一個(gè)原數(shù)據(jù)的副本。
8
、
python
為什么使用
*args
和
**kwargs
如果我們不確定要往函數(shù)中傳入多少個(gè)參數(shù),或者我們想往函數(shù)中以列表和元組
的形式傳參數(shù)時(shí),那就使要用*args;如果我們不知道要往函數(shù)中傳入多少個(gè)關(guān)
鍵詞參數(shù),或者想傳入字典的值作為關(guān)鍵詞參數(shù)時(shí),那就要使用**kwargs。args
和 kwargs 這兩個(gè)標(biāo)識(shí)符是約定俗成的用法,你當(dāng)然還可以用*bob 和**billy,
但是這樣就不太專業(yè)。
9
、重寫(xiě)和重載有什么區(qū)別?
重寫(xiě):用在類的繼承當(dāng)中。子類對(duì)父類的同名方法,進(jìn)新重寫(xiě)。在子類同名方法
內(nèi)部,如果要延用父類的方法,可以使用 super 調(diào)用。
重載:用在類當(dāng)中,對(duì)于同一個(gè)方法名,支持不同類型的參數(shù),支持不同數(shù)量的
參數(shù)。由于 python 的函數(shù)本身就對(duì)參數(shù)不作類型限定,也有*args 和**kwargs
支持不定長(zhǎng)參數(shù)。
10
、
python
實(shí)現(xiàn)
get
數(shù)據(jù)庫(kù)的表?你是怎么實(shí)現(xiàn)的?
python 當(dāng)中對(duì)于不同數(shù)據(jù)庫(kù),都有不同的第三庫(kù)來(lái)實(shí)現(xiàn)連接和數(shù)據(jù)庫(kù)操作。
比較熟悉的是對(duì) mysql 的操作。使用的是 pymysql 這個(gè)第三方庫(kù)。第一步是建立
數(shù) 據(jù) 庫(kù) 連 接 ; 第 二 步 調(diào) 用 execute 方 法 執(zhí) 行 sql 語(yǔ) 句 , 第 三 步 使 用
fetchone,fetchall,fetchmany 去獲取不同條數(shù)的結(jié)果。
11
、對(duì)象
(
實(shí)例
)
方法,類方法,靜態(tài)方法的定義有何不同?分別適用于什么場(chǎng)
景?
python 中,類中定義的普通函數(shù)就是對(duì)象方法,對(duì)象方法中的第一個(gè)形參一般
會(huì)定義為`self`,表示調(diào)用的對(duì)象本身,當(dāng)對(duì)象調(diào)用對(duì)象方法時(shí)會(huì)被隱式的傳遞
給這個(gè)形參。所以當(dāng)函數(shù)需要用到對(duì)象或?qū)ο蟮膶傩詴r(shí)一般會(huì)將其定義為對(duì)象方
法。
類方法定義時(shí),需要使用裝飾器`classmethod`進(jìn)行裝飾,類方法中的第一個(gè)形
參一般會(huì)定義為`cls`,表示類本身。當(dāng)對(duì)象調(diào)用或類調(diào)用類方法時(shí),類會(huì)被隱
式的傳遞給這個(gè)形參。所以當(dāng)函數(shù)需要用到類或者類的屬性時(shí)一般會(huì)將其定義為
類方法。
靜態(tài)方法定義時(shí),需要使用裝飾器`staticmethod`進(jìn)行裝飾,其他與普通函數(shù)沒(méi)
有區(qū)別。一般會(huì)將一些與對(duì)象和類無(wú)關(guān)的工具函數(shù)定義為靜態(tài)方法,方便調(diào)用。
12
、
SQL
連表查詢,去重查詢,查詢重復(fù)的數(shù)據(jù)?
連表查詢:SELECT 字段 1,字段 2,字段 3,…… FROM 表名 1 INNER JOIN 表名 2
ON 關(guān)聯(lián)條件;
去重查詢:SELECT distinct ...;
查詢重復(fù)的數(shù)據(jù):select 列名 from 表名 group by 列名 having count(列
名) > 1;
13
、
python
的單例模式?
單例模式是:確保類有且只有一個(gè)對(duì)象被創(chuàng)建
為唯一對(duì)象提供訪問(wèn)點(diǎn),令其可被全局訪問(wèn)
控制共享資源的并行訪問(wèn)
具體實(shí)現(xiàn)方式可以通過(guò)模塊導(dǎo)入、裝飾器、控制 __new__方法 等等。
14
、什么是
PEP 8
?
EP 8 代表 Python Enhancement Proposal,它可以定義為幫助我們提供有關(guān)如
何編寫(xiě) Python 代碼的指南的文檔。 它基本上是一組規(guī)則,指定如何格式化
Python 代碼以獲得最大的可讀性。 它由 Guido van Rossum、Barry Warsaw 和
Nick Coghlan 于 2001 年編寫(xiě)
15
、
PO
模式的封裝原則有哪一些?
公共方法表示頁(yè)面提供的服務(wù)。 比如把登錄封裝成 login 方法,搜索操作封裝
成 search 方法,
注冊(cè)操作封裝成 register 方法。
- 盡量不要暴露頁(yè)面的內(nèi)部,比如頁(yè)面的 HTML, 頁(yè)面的上下結(jié)構(gòu)
- 一般不做斷言,做到頁(yè)面邏輯和測(cè)試邏輯的分離。
- 方法返回 self 或者其他 PageObjects,也可以是元素屬性等。
- 不需要封裝整個(gè)頁(yè)面行為,用到什么邏輯封裝什么邏輯
- 同一操作如果出現(xiàn)不同結(jié)果,可以用不同的方法表示。比如登錄成功有跳轉(zhuǎn),
登錄失敗報(bào)錯(cuò),登錄未授權(quán),
二、編碼題:
1
、冪的遞歸,計(jì)算
x
的
n
次方,如:
3
的
4
次方 為
3*3*3*3=81
# 遞歸的方式
def mi(x, n):
if n == 0:
return 1
else:
return x*mi(x, n-1)
print(mi(3, 4))
非遞歸的方式:
def mix(x,n):
result = 1
for count in range(n):
result *= x
return result
print(mi(3,4))
2
、統(tǒng)計(jì)列表(
list
)中每個(gè)元素出現(xiàn)的次數(shù)
# 統(tǒng)計(jì)列表(
list)中每個(gè)元素出現(xiàn)的次數(shù)
lista = [1, 2, 3, 4, 12, 22, 15, 44, 3, 4, 4, 4, 7, 7, 44, 77, 100]
new_dict = {}
for item in lista:
if item not in new_dict.keys():
new_dict[item] = lista.count(item)
print(new_dict)
3
、
['abc13','abv89']
這種列表,打印最大長(zhǎng)度的共同的前綴,列表元素個(gè)數(shù)不
確定
def test_str(iterable):
return_str=''
for i in zip(*iterable):
if len(set(i))==1:
return_str +=i[0]
else:
break
print(return_str)
return return_str
4
、對(duì)
list
去重并找出列表
list
中的重復(fù)元素
from collections import Counter #引入 Counter
a = [1, 2, 3, 3, 4, 4]
b = dict(Counter(a))
print(b)
print ([key for key,value in b.items() if value > 1]) #只展示重復(fù)元素
print ({key:value for key,value in b.items() if value > 1}) #展現(xiàn)重復(fù)
元素和重復(fù)次數(shù)
5
、已知一個(gè)隊(duì)列
[1, 3, 6, 9, 7, 3, 4, 6]
1.
按從小到大排序
2.
按從大大小排序
3.
去除重復(fù)數(shù)字
a = [1, 3, 6, 9, 7, 3, 4, 6]
# 1.sort 排序,正序
a.sort()
print(a)
# 2.sort 倒敘
a.sort(reverse=True)
print(a)
# 3.去重
b = list(set(a))
print(b)
6
、任選語(yǔ)言完成雙向冒泡排序算法程序(
[8,6,4,3,9,1,2,5,7]
升序)
def bubble_sort(arry):
length = len(arry)
si = 0
ei = length - 1
while si < ei:
flage = False
if arry[si] > arry[si + 1]:
arry[si], arry[si + 1] = arry[si + 1], arry[si]
for i in range(si + 1, ei):
if arry[i] > arry[i + 1]:
arry[i], arry[i + 1] = arry[i + 1], arry[i]
flage = True
if arry[i] < arry[i - 1]:
arry[i], arry[i - 1] = arry[i - 1], arry[i]
ei -= 2
if arry[ei] < arry[ei - 1]:
arry[ei], arry[ei - 1] = arry[ei - 1], arry[ei]
for j in range(ei - 1, si, -1):
if arry[j] < arry[j - 1]:
arry[j], arry[j - 1] = arry[j - 1], arry[j]
flage = True
if arry[j] > arry[j + 1]:
arry[j], arry[j + 1] = arry[j + 1], arry[j]
si += 2
if not flage:
break
return arry
if __name__ == '__main__':
res = bubble_sort([8, 6, 4, 3, 9, 1, 2, 5, 7])
print(res)
三、自動(dòng)化基礎(chǔ)能力評(píng)估:
1
、
python
列表和字典的區(qū)別,列表和元組的區(qū)別?
列表是有序的,字典是無(wú)序的。列表通過(guò)索引獲取、字典通過(guò) key 獲取。
列表是可變的,可以修改、添加、刪除其中的元素,但是元組是不可變的,不能
修改、添加、刪除其中的元素。
對(duì)于一個(gè)元素的元組,必須要在元素后加逗號(hào),而列表不需要。
2
、
Python
用到的庫(kù)
單元測(cè)試框架:unittest pytest
操作 mysql 數(shù)據(jù)庫(kù): pymysql
http 請(qǐng)求庫(kù):requests
web 自動(dòng)化:selenium
處理日志:logging
json 數(shù)據(jù)提取和 json 文件讀寫(xiě):json,jsonpath
pyyaml:yaml 文件讀寫(xiě)
3
、
unittest
和
pytest
區(qū)別?
·pytest 是第三方庫(kù),基于 unittest 的擴(kuò)展框架,比 unittest 更簡(jiǎn)潔,高效
·pytest 有豐富的插件系統(tǒng)
·pytest 的夾具使用更加靈活
·pytest 可以很方便的過(guò)濾用例
4
、
python
當(dāng)中如何操作數(shù)據(jù)庫(kù)
?
·
python 中不同的數(shù)據(jù)庫(kù),都有對(duì)應(yīng)的第三方庫(kù)。比如 mysql 數(shù)據(jù)庫(kù)有 pymysql
庫(kù),oracle 數(shù)據(jù)庫(kù)有 cx_Oracle
·安裝成功第三方庫(kù)后,代碼中將包導(dǎo)進(jìn)來(lái)
·接下來(lái)就是連接數(shù)據(jù)庫(kù),提供數(shù)據(jù)庫(kù)的服務(wù)器地址、端口號(hào)、訪問(wèn)的用戶名和
密碼、數(shù)據(jù)庫(kù)名稱,通過(guò)調(diào)用對(duì)應(yīng)的方法去連接
·連接成功之后,調(diào)用執(zhí)行 sql 語(yǔ)句的方法去操作數(shù)據(jù)庫(kù)
·操作完成之后,釋放數(shù)據(jù)庫(kù)連接
5
、
jemeter
或
postman
實(shí)現(xiàn)多接口關(guān)聯(lián)測(cè)試
?
怎么做關(guān)聯(lián)
?
6
、接口自動(dòng)化的斷言怎么做
7
、如果需要用自動(dòng)化測(cè)刪除接口,斷言怎么做
8
、做自動(dòng)化的過(guò)程中如何處理驗(yàn)證碼
·讓開(kāi)發(fā)屏蔽驗(yàn)證碼,邀請(qǐng)開(kāi)發(fā)處理,在測(cè)試環(huán)境,預(yù)發(fā)和正式環(huán)境恢復(fù)
·讓開(kāi)發(fā)設(shè)置一個(gè)萬(wàn)能驗(yàn)證碼,使用復(fù)雜的其他人無(wú)法猜到的驗(yàn)證碼
·基于圖像識(shí)別,破解驗(yàn)證碼
9
、自動(dòng)化測(cè)試用例如何編寫(xiě)
自動(dòng)化測(cè)試本質(zhì)是測(cè)試,是用自動(dòng)化手段,替代部分手工測(cè)試。
·自動(dòng)化測(cè)試用例,源自功能測(cè)試用例,都應(yīng)包含前置/后置,步驟,斷言。
·自動(dòng)化用例設(shè)計(jì)原則,與功能用例一致。
·自動(dòng)化用例需要自行解決:環(huán)境依賴問(wèn)題。比如手工測(cè)試時(shí),遇到前置條件不
滿足,手工去準(zhǔn)備前置條件再測(cè)試。
·自動(dòng)化用例斷言要明確:將手工測(cè)試看到的期望效果,轉(zhuǎn)成代碼。
·自動(dòng)化用例需要考慮重復(fù)執(zhí)行不受影響。
·考慮好以上 5 點(diǎn),使用工具或者代碼的測(cè)試框架編寫(xiě)即可。
10
、
pytest
的前置實(shí)現(xiàn)有哪幾種方式?
11
、
Appium
都有哪些啟動(dòng)方式
12
、
web ui
自動(dòng)化中顯式等待、隱式等待有什么區(qū)別
相同點(diǎn):
·都是智能等待,在一定時(shí)間范圍內(nèi)不斷查找元素,一旦找到立刻執(zhí)行后續(xù)代碼,
沒(méi)找到就會(huì)一直查找到超時(shí)為止
不同點(diǎn):
顯式等待:顯示等待是單獨(dú)針對(duì)某個(gè)元素,設(shè)置一個(gè)等待時(shí)間,設(shè)置一個(gè)查詢間
隔時(shí)間,在等待時(shí)間內(nèi)會(huì)按照設(shè)置的間隔時(shí)間對(duì)該元素進(jìn)行查找,超過(guò)設(shè)置的等
待時(shí)間尚未出現(xiàn)則拋異常;顯示等待必須在每個(gè)需要等待的元素前面進(jìn)行聲明
隱式等待:隱式等待是全局的是針對(duì)所有元素,設(shè)置一個(gè)等待時(shí)間,在設(shè)置的等
待時(shí)間內(nèi),程序會(huì)不停檢測(cè)頁(yè)面元素是否全部加載完成,加載完成則繼續(xù)向下,
超過(guò)設(shè)置的等待時(shí)間尚未出現(xiàn)則拋異常;隱式等待只需要聲明一次,聲明之后對(duì)
整個(gè) drvier 的生命周期都有效不用重復(fù)聲明;程序會(huì)一直等待整個(gè)頁(yè)面加載完
成
13、
有沒(méi)有遇到元素定位不到情況?如何處理的?
14、·頁(yè)面加載元素過(guò)慢,加等待時(shí)間
15、·頁(yè)面有 frame 框架頁(yè),需要先跳轉(zhuǎn)入 frame 框架再定位
16、·可能該元素是動(dòng)態(tài)元素,定位方式要優(yōu)化,可以使用部分元素定位或通過(guò)
父節(jié)點(diǎn)或兄弟節(jié)點(diǎn)定位。
17、·可能識(shí)別了元素,但是不能操作,比如元素不可用,不可寫(xiě)等。需要使用
js 先把前置的操作完成,
18、·元素定位的表達(dá)式寫(xiě)錯(cuò)了。
19
、請(qǐng)盡可能多的列出自動(dòng)化的元素定位方式,以及你最喜歡的定位方式?
web 自動(dòng)化的定位方式:
1、通過(guò) id:find_element_by_id
2、通過(guò) name 屬性:find_element_by_name
3、通過(guò) class 屬性:find_element_by_name
4、通過(guò)標(biāo)簽名:find_element_by_tag_name
5、通過(guò)文本定位鏈接標(biāo)簽:find_element_by_link_text
6、通過(guò)文本部分匹配,定位鏈接標(biāo)簽:find_element_by_partial_link_text
7、通過(guò) xpath 定位:find_element_by_xpath
8、css 選擇器定位:find_element_by_css_selector
最常用的:id,xpath 和 css 這三種
20
、如果同一個(gè)瀏覽器打開(kāi)兩個(gè)窗口,要用
selenium
里面哪個(gè)指令進(jìn)行切換?
1,窗口切換, 2, iframe 切換, 3,alert 切換
21
、
App
自動(dòng)化有做過(guò)嗎?知道用到哪些技術(shù)框架嗎?
做過(guò),app 自動(dòng)化主要使用的開(kāi)源框架 appium,結(jié)合測(cè)試框架 pytest,還有 PO
設(shè)計(jì)思想,共同搭建了 app 自動(dòng)化測(cè)試框架。
22
、
ui
自動(dòng)化出現(xiàn)的異常,以及出現(xiàn)這些異常后你是如何處理的?
元素定位失敗異常,處理方式為檢查元素定位表達(dá)式,添加等待;
定位超時(shí)異常,檢查定位方式,檢查是否有 iframe ;
元素?zé)o法交互,檢查是否定位到正確元素。
23
、什么
PO
模式,什么是
page factory
?
·PO 模式是 page object model 的縮寫(xiě),顧名思義, 是一種設(shè)計(jì)模式,把每個(gè)
頁(yè)面當(dāng)成一個(gè)頁(yè)面對(duì)象,頁(yè)面層寫(xiě)定位元素方法和頁(yè)面操作方法,實(shí)現(xiàn)腳本的
page 和真實(shí)的網(wǎng)站頁(yè)面 Map 起來(lái),一對(duì)應(yīng)起來(lái)
·PO 模式業(yè)務(wù)代碼和測(cè)試代碼被分開(kāi),降低耦合性維護(hù)成本低,減少代碼冗余
18
、簡(jiǎn)述
selenium
的原理
selenium 涉及到三個(gè)組件的通訊,分別是
- 瀏覽器
- webdriver
- client
client 負(fù)責(zé)通過(guò)對(duì)應(yīng)的編程語(yǔ)言函數(shù)發(fā)送請(qǐng)求給 webdriver
client 其實(shí)并不知道瀏覽器是怎么工作的,但是 driver 知道,在 selenium 啟
動(dòng)以后,driver 其實(shí)充當(dāng)了服務(wù)器的角色,跟 client 和瀏覽器通信,client
根據(jù) webdriver 協(xié)議發(fā)送請(qǐng)求給 driver,driver 解析請(qǐng)求,并在瀏覽器上執(zhí)行
相應(yīng)的操作,并把執(zhí)行結(jié)果返回給 client。這就是 selenium 工作的大致原理。
19
、
UI
自動(dòng)化測(cè)試用例在運(yùn)行過(guò)程中經(jīng)常會(huì)出現(xiàn)不穩(wěn)定的情況,也就是說(shuō)這次
可以通過(guò),下次就沒(méi)有辦法通過(guò)了,如何去提升用例的穩(wěn)定性?
1. 界面上無(wú)法預(yù)測(cè)的彈框。頁(yè)面上經(jīng)常會(huì)根據(jù)用戶行為推送或者彈出動(dòng)態(tài)的信
息,比如版本更新,消息通知,推薦產(chǎn)品等等,當(dāng)這些彈框出現(xiàn)以后,原來(lái)的頁(yè)
面元素會(huì)被遮擋,無(wú)法被定位,此時(shí)可能會(huì)造成自動(dòng)化測(cè)試腳本運(yùn)行錯(cuò)誤。
2. 頁(yè)面元素的動(dòng)態(tài)變化;主要有兩方面的變化,第一方面,前端需求經(jīng)常發(fā)生
變化導(dǎo)致前端代碼頻繁修改,當(dāng)前端頁(yè)面變化以后可能會(huì)造成之前的元素?zé)o法被
定位;第二方面,頁(yè)面可能會(huì)根據(jù)用戶的狀態(tài)和等級(jí)展示不同的頁(yè)面,或者是這
一次訪問(wèn)的數(shù)據(jù)和下一次會(huì)不同。
3. 隨機(jī)的頁(yè)面延遲造成控件識(shí)別失敗;受限于網(wǎng)絡(luò)環(huán)境和設(shè)備狀態(tài),自動(dòng)化代
碼每次運(yùn)行時(shí)可能會(huì)產(chǎn)生隨機(jī)的超時(shí)處理。
4. 測(cè)試數(shù)據(jù)變更。ui 測(cè)試每個(gè)用例的測(cè)試步驟會(huì)有很大的區(qū)別,他們不能共享
同一套代碼邏輯,當(dāng)測(cè)試數(shù)據(jù)變更時(shí),如果不能及時(shí)更新自動(dòng)化代碼,會(huì)造成腳
本執(zhí)行出錯(cuò)等問(wèn)題。
四、自動(dòng)化項(xiàng)目實(shí)戰(zhàn)能力評(píng)估:
1
、介紹一下你的自動(dòng)化測(cè)試框架?
我的框架主要根據(jù)分層思想設(shè)計(jì)了幾個(gè)獨(dú)立模塊:
模塊一:主要存放通用業(yè)務(wù)代碼,比如接口訪問(wèn),數(shù)據(jù)庫(kù)操作,excel 操作,等
等
模塊二:主要負(fù)責(zé)用例收集和用例執(zhí)行,生成測(cè)試報(bào)告。
模塊三:主要負(fù)責(zé)存放測(cè)試用例數(shù)據(jù)。通常是使用 excel, yaml, 等通用數(shù)據(jù)格
式。
模塊四:主要存放測(cè)試用例方法和測(cè)試邏輯相關(guān)代碼。這里會(huì)調(diào)用模塊一種的通
用方法。
2
、講一下在工作中怎么做的自動(dòng)化測(cè)試?
a. 根據(jù)自動(dòng)化測(cè)試特性整理需求
b. 根據(jù)優(yōu)先級(jí),和公司人員狀況制定自動(dòng)化測(cè)試計(jì)劃
c. 制定自動(dòng)化測(cè)試執(zhí)行方案
d. 自動(dòng)化測(cè)試用例設(shè)計(jì)或從功能測(cè)試用例中挑選適合的用例
e. 自動(dòng)化腳本的開(kāi)發(fā)
f. 自動(dòng)化測(cè)試執(zhí)行,生成報(bào)告
4
、自動(dòng)化測(cè)試框架至少包含哪些核心模塊。
- 基礎(chǔ)方法
- 數(shù)據(jù)驅(qū)動(dòng)
- PO 分層
- 接口分層
- 接口數(shù)據(jù)管理
- 異常處理
- 工具包
- 配置
- 日志收集
- 測(cè)試報(bào)告
5
、框架中的接口參數(shù)傳遞怎么做的?是否有優(yōu)化,第三庫(kù)有沒(méi)有用到,方法是
什么?
框架當(dāng)中接口參數(shù)傳遞主要涉及 2 部分:一是數(shù)據(jù)生成或者提取,二是替換。在
框架當(dāng)中,數(shù)據(jù)從響應(yīng)結(jié)果提取用的 jsonpath,提取表達(dá)式直接寫(xiě)在 excel 當(dāng)
中,提取之后存儲(chǔ)到變量類 Data 當(dāng)中,作為它的類屬性。
替換時(shí),則直接訪問(wèn) Data 類的類屬性,將其值拿到并替換。在 excel 中要替換
的標(biāo)志為#value#。因?yàn)闀?huì)存在有多個(gè)要替換的值,所以用正則表達(dá)式來(lái)查找到
所有要替換的標(biāo)識(shí),然后全部替換。
用到的第三方庫(kù)的話,一個(gè)是 jsonpath,一個(gè)是 re
6
、拿到一個(gè)項(xiàng)目,怎么衡量這個(gè)項(xiàng)目做接口自動(dòng)化還是
UI
自動(dòng)化?
1、不管什么項(xiàng)目都可以做接口自動(dòng)化
2、偏公司內(nèi)部人員使用的管理平臺(tái)無(wú)需做 UI 自動(dòng)化,對(duì)外用戶的可以考慮做
UI 自動(dòng)化
7
、框架的數(shù)據(jù)庫(kù)驗(yàn)證在你
excel
中
check_sql
放的是什么,你如何做的比對(duì)?
check_sql 中存放的是一個(gè)列表,列表的成員是字典,字典有 3 個(gè) key,一個(gè)是
sql 語(yǔ)句,第二個(gè)是期望結(jié)果,第三個(gè)是 sql 的查詢方式(查詢總條數(shù)/查詢值)
在收到響應(yīng)結(jié)果以后,會(huì)遍歷 check_sql 中的列表,將每一個(gè)字典取出來(lái),執(zhí)行
sql 語(yǔ)句查詢結(jié)果 ,并與期望結(jié)果做比較。
8
、自動(dòng)化測(cè)試中,測(cè)試用例的執(zhí)行是怎么讓他按照你寫(xiě)的用例一條一條執(zhí)行
的?
在我的項(xiàng)目接口自動(dòng)化中,我是用的 pytest 框架。
一個(gè)接口的用例,我的用例數(shù)據(jù)是寫(xiě)在 excel 當(dāng)中,在編寫(xiě)時(shí)就是按照順序?qū)懙模?
從 excel 讀取出來(lái)使用數(shù)據(jù)驅(qū)動(dòng) 方式就是按照 excel 中的順序;
多個(gè)接口的用例,因?yàn)槲沂且粋€(gè)接口一個(gè) py 測(cè)試文件,所以我在 py 測(cè)試文件命
名中用 00-99 數(shù)字按順序編寫(xiě)的。
9.Login
這些用例數(shù)據(jù)是在哪里取的?
excel
嗎?用到什么方法?什么第三方
庫(kù)?
10
、自動(dòng)化測(cè)試中,測(cè)試用例的執(zhí)行是怎么讓他按照你寫(xiě)的用例一條一條執(zhí)行
的?
在我的項(xiàng)目接口自動(dòng)化中,我是用的 pytest 框架。
一個(gè)接口的用例,我的用例數(shù)據(jù)是寫(xiě)在 excel 當(dāng)中,在編寫(xiě)時(shí)就是按照順序?qū)懙模?
從 excel 讀取出來(lái)使用數(shù)據(jù)驅(qū)動(dòng) 方式就是按照 excel 中的順序;
多個(gè)接口的用例,因?yàn)槲沂且粋€(gè)接口一個(gè) py 測(cè)試文件,所以我在 py 測(cè)試文件命
名中用 00-99 數(shù)字按順序編寫(xiě)的。
具體公司的業(yè)務(wù):業(yè)務(wù)怎么開(kāi)展 項(xiàng)目的介紹?
(
或者簡(jiǎn)單介紹最熟悉的項(xiàng)目介紹:
)
主要考察
2
個(gè)方面:一是表達(dá)能力和業(yè)務(wù)的熟悉度。二是做的項(xiàng)目復(fù)雜度如何,是否能勝任復(fù)
雜項(xiàng)目的測(cè)試工作。
一般是根據(jù)自己的業(yè)務(wù)來(lái)回答。最好是能講出有挑戰(zhàn)性有難度或者復(fù)雜的業(yè)務(wù)場(chǎng)景。面試官不一
定聽(tīng)得懂,但是他覺(jué)得復(fù)雜挺難的就可以。
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-480989.html
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-480989.html
到了這里,關(guān)于自動(dòng)化測(cè)試面試真題(附答案)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!