自動化測試 | python自動化面試題


一、json和字典dict的區別

首先python里面的基礎數據類型有:int、str、 float、list、bool、tuple、dict、set這幾種類型,里面沒json這種數據類型。

JSON( 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規范)的一個子集,采用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。

由於你的代碼是python寫的(也有可能是php,java,c,ruby等語言),但是后端接口是java寫的(也有可能是其它語言),不同的語言數據類型是不一樣的(就好比中國的語言和美國的語言數據類型也不一樣,中國的一般說一只羊,一頭牛,美國都是 a /an這種單位),所以就導致你提交的數據,別的開發語言無法識別,這就需要規范傳輸的數據(傳輸的數據都是一個字符串),大家都遵循一個規范,按一個標准的格式去傳輸,於是就有就json這種國際化規范的數據類型。

json本質上還是字符串,只是按key:value這種鍵值對的格式來的字符串b = '{"a": 1, "b": 2, "c": true}'

二、測試的數據放在哪?
1.對於賬號密碼,這種管全局的參數,可以用命令行參數,單獨抽出來,寫的配置文件里(如ini)
2.對於一些一次性消耗的數據,比如注冊,每次注冊不一樣的數,可以用隨機函數生成
3.對於一個接口有多組測試的參數,可以參數化,數據放yaml,text,json,excel都可以
4.對於可以反復使用的數據,比如訂單的各種狀態需要造數據的情況,可以放到數據庫,每次數據初始化,用完后再清理
5.對於郵箱配置的一些參數,可以用ini配置文件
6.對於全部是獨立的接口項目,可以用數據驅動方式,用excel/csv管理測試的接口數據
7.對於少量的靜態數據,比如一個接口的測試數據,也就2-3組,可以寫到py腳本的開頭,十年八年都不會變更的

三、什么是數據驅動,如何參數化?



四、下個接口請求參數依賴上個接口的返回數據
這個很容易,不同的接口封裝成不同的函數或方法,需要的數據return出來,用一個中間變量a去接受,后面的接口傳a就可以了
可以參考登錄的cookie或token
五、依賴於登錄的接口如何處理
參考requests的方法

六、依賴第三方的接口如何處理
這個需要自己去搭建一個mock服務,模擬接口返回數據
mock服務搭建需要自己能夠熟練掌握,面試會問你具體如何搭建 ,如何模擬返回的數據,是用的什么格式,如何請求的

七、不可逆的操作,如何處理,比如刪除一個訂單這種接口如何測試

此題考的是造數據的能力,接口的請求數據,很多都是需要依賴前面一個狀態的
比如工作流這種,流向不同的人狀態不一樣,操作權限不一樣,測試的時候,每種狀態都要測到,就需要自己會造數據了。
平常手工測試造數據,直接在數據庫改字段狀態。那么自動化也是一樣,造數據可以用python連數據庫了,做增刪改查的操作
測試用例前置操作,setUp做數據准備
后置操作,tearDown做數據清理

八.接口產生的垃圾數據如何清理

跟上面一樣,造數據和數據清理,需用python連數據庫了,做增刪改查的操作
測試用例前置操作,setUp做數據准備
后置操作,tearDown做數據清理

九.一個訂單的幾種狀態如何全部測到,如:未處理,處理中,處理失敗,處理成功

跟上面一樣,也是考察造數據,修改數據的狀態

十、get和post的區別

十一、post請求的四種參數形式是什么
application/x-www-form-urlencoded 
multipart/form-data 
application/json 
text/xml
十一、公司有用到第三方服務,出了問題,打電話給第三方,第三方不承認,這時候日志又顯示不到錯誤,應該怎么處理

1、單獨調用第三方服務,查看返回結果;
2、引入mock機制,假如正常返回的情況下,測試我們的系統是否存在問題;
3、建議開發增加日志,詳細記錄調用第三方接口的過程,記錄調用前接口入參,返參等信息;

十二、接口自動化中的關聯怎么處理?

將請求返回的結果反射到類屬性中,使用setattr()函數,下個請求調用這個類

十三、自動化測試怎么校驗結果?

使用斷言,預期結果值和實際結果值進行對比;

十四、自動化使用的測試框架是什么?簡述自動化框架的設計、維護

1、自動化使用的測試框架:
語言:python
測試框架:unittest(assertEqual,assertTure,assertFalse)
接口調用:requests(API非常簡潔)
數據驅動:ddt(裝飾器:ddt類,unpack測試方法裝飾器解包時候,data測試方法裝飾器,可迭代的數據類型)
注:普通用戶,管理用戶,數據庫,配置文件---基礎數據
數據管理:openpyxl(excel,CSV,json,yaml,txt)
數據庫交互:pymysql ---根據數據庫選擇相應的第三方模塊來完成
數據格式的轉換:eval,json
日志處理:logging ---清晰的執行過程,快速定位問題
持續集成:Jenkins(通過插件HTML Publisher/git/Email Extension)進行自動構建,生成HTML,發送郵件

2、自動化框架的設計、維護:
1、數據與代碼分離,(數據驅動)==數據驅動框架==
例如:參數不一樣,響應不一樣
2、結構分層(數據層,用例層,邏輯性)
邏輯層:公用的方法,封裝起來,避免用例層的代碼冗余
數據層:例如,設計Excel,excel讀取,參數化替換等
用例層:存放測試用例

十五、在接口自動化測試中都用到了哪些包:
pymysql:連接數據庫
ddt:
requests:
urllib:
xlrd:
xlwt:
xlutils:

十六、根據什么來做斷言?
1、協議狀態碼: 200,404,503    2、業務狀態碼:status:0    3、業務數據

十七、具體的在這個項目中自動化怎么應用到實際的,您對自動化結果的分析

完成所有的自動化測試框架的設計和實現后,進行接口測試,然后集成到jenkins,配置定時執行,生成html報表,查看測試通過率,查看接口的功能

每次發版時,進行回歸測試,新功能開發未提測前

 十八、做好測試計划的關鍵是什么?

明確測試目的,增強測試計划的實用性,保證測試用例的實用性和覆蓋率,完全需求文檔和規格指標書等,嚴格界定測試周期,測試輪次,測試覆蓋模塊等

十九、super 是干嘛用的?在 Python2 和 Python3 使用,有什么區別?為什么要使用 super?請舉例說明。

super 用於繼承父類的方法、屬性。super 是新式類中才有的,所以 Python2 中使用時,要在類名的參數中寫 Object。Python3 默認是新式類,不用寫,直接可用。使用 super 可以提高代碼的復用性、可維護性。修改代碼時,只需修改一處。

父類:
class Car():
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year
def .....

class ElectricCar(Car):
    def __init__(self,make,model,year):        --------初始化父類的屬性
        super().__init__(make,model,year):
    def ....
子類就可以使用父類的屬性

二十、L = [1, 2, 3, 11, 2, 5, 3, 2, 5, 3],用一行代碼得出 [11, 1, 2, 3, 5]

答:list(set(L))

二十一、L = [1, 2, 3, 4, 5],L[10:]的結果是?

答:空列表[]

二十二、list= [1, 2, 3, 4],如何得出 '1234'?

list=[1,2,3,4]
list2=''
for i in list:
    list2=list2+str(i)
print(list2)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM