1. 程式人生 > 實用技巧 >python面試題2

python面試題2

python面試題2

  前面寫了一篇關於面試測試遇到的一些python面試題,有部分朋友留言說挺不錯的,於是安靜又收集了一批面試題,供明年的金3銀4做準備(這次安靜會寫一批python的面試題和我們測試的面試題)

1、自動化流程是什麼?

首先搭建環境,然後根據專案搭建自動化框架,編寫自動化用例,整理用例,自動生成測試報告,然後整合到jenkins上進行操作

2、app出現ANR和crash如何操作?

出現ANR和crash進行復現抓取日誌(adb命令)

3、在自動化的過程中出現用例執行失敗,應該怎麼做?

編寫自動化用例的時候斷言編寫清楚,然後也可以通過用例失敗後進行截圖進行儲存,方便我們後續檢視用例失敗原因,自動化用例失敗後,進行手工操作,檢視是否真的存在問題,如果不存在,可以檢視程式碼是否書寫錯誤

4、在web和app中,一個元素明明定位到了,但是點選無效

  • web自動化中我們可以通過JS進行點選元素,
  • app自動化中如果是H5頁面的時候沒有辦法點選,我們需要用到webdriver中的觸控模組
  • app自動化中如果點選無效,我們可以通過座標的方式進行模擬點選

5、app測試和web測試有什麼區別?

整體來說,web測試和app測試一般沒有區別,都需要進行需求評審,用例評審,提bug,提交測試報告。唯一區別的就是app測試需要進行安裝,下載,升級,覆蓋以及冷啟動和熱啟動,還有手機上的電話,電量不足,資訊,以及其他軟體的互動測試

6、自動化中如何截圖

通過函式get_screensho t_as_file(self,filename)進行截圖

7、目前測試都需要依賴登入,自動化中如何操作?

  • 如果是介面自動化的話可以使用session進行保持會話,然後再執行登入後的操作
  • 如果是web自動化的話可以進行定位輸入賬號密碼完成登入
  • 如果是app自動化的話可以進行定位賬號密碼輸入完成登入

8、你在自動化中使用過資料驅動嗎?

一般使用ddt資料驅動來進行儲存資料,有時候也會使用paramunittest

9、有兩組資料分別為a=[1,2,3,4,5] b=[‘a’,'b','c','d','e'],通過python如何成c=['a1','b2','c3','d4','e5']

a=[1,2,3,4,5]
b = ["a", "b", "c", "d", "e"]
c = [str(i)+str(j) for i,j in zip(b, a)]
print(c)


列印結果:
['a1', 'b2', 'c3', 'd4', 'e5']

10、通過python實現9乘9口訣

# 9*9口訣
for i in range(1,10):
    for j in range(1,i+1):
        print("%s*%s=%s"%(i,j,i*j),end=" ")
    print("")

輸出結果:
1*1=1 
2*1=2 2*2=4 
3*1=3 3*2=6 3*3=9 
4*1=4 4*2=8 4*3=12 4*4=16 
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

11、通過python實現‘hello_world_anjing’變成[‘hello’,‘world’,‘anjing’]

a = 'hello_world_anjing'
c = a.split('_')
print(c)


# 輸出結果:
# ['hello', 'world', 'anjing']

12、一個列表通過python判斷有多少個正數和負數

a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8]
b = []
c = []
for i in a:
    if i>0:
        b.append(i)
    elif i < 0:
        c.append(i)
    else:
        pass
print(len(b))
print(len(c))

執行結果:
5
4

13、通過python如何實現字串和列表的轉換

# 字串轉換列表
a = 'anjing'
c = list(a)
d = a.split(' ')
print(d)

# 列表轉換字串
a = ['1','2','3','4']
c =''.join(a)
print(c)

14、列表去重

# 列表去重
a = ['1','2','3','4','2','1','4']
c = set(a)
print(c)

# {'2', '3', '1', '4'}

15、python中的__init__表示什麼

# 初始化函式,用來完成一些預設的設定

class test():
    def __init__(self):
        self.name = 'anjing'
        self.age = '18'

a = test()
print('我的名字是:%s'%a.name)
print('我的年齡是:%s'%a.age)


我的名字是:anjing
我的年齡是:18

16、對列表進行翻轉

# 列表進行翻轉
a = [1,2,3,4,5]
print(a[::-1])


# [5, 4, 3, 2, 1]

17、loging模組是什麼?有什麼作用?

loging屬於日誌模組,在我們編寫指令碼的時候可以告訴我們每一步都在幹什麼,如果報錯的話,方便我們進行分析資料,也就是我們平常說的打點的作用

import logging

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename='/tmp/test.log',
                    filemode='w')
logging.debug('debug message') # 低級別的,除錯資訊
logging.info('info message') # 正常資訊
logging.warning('warning message') # 警告資訊
logging.error('error message') # 錯誤資訊
logging.critical('critical message') # 高級別的 # 嚴重錯誤資訊

18、append和extend的區別

# append
a = [1,2,3,4,5]
c = [6,7]
a.append(c)
print(a)

# [1, 2, 3, 4, 5, [6, 7]]

# extend

a = [1,2,3,4,5]
c = [6,7]
a.extend(c)
print(a)

# [1, 2, 3, 4, 5, 6, 7]

19、通過程式碼介紹下zip函式用法

zip()函式在運算時,會以一個或者多個序列作為引數,返回一個元祖的列表,zip()引數口語接受任何型別的序列,通過也支援多個引數。

# 列表
a = [1,2]
b = [3,4]
c = [i for i in zip(a,b)]
print(c)

# [(1, 3), (2, 4)]

# 元祖
a = (1,2)
b= (3,4)
c = [i for i in zip(a,b)]
print(c)

# [(1, 3), (2, 4)]

# 字串
a = '12'
b = '34'
c = [i for i in zip(a,b)]
print(c)

# [(1, 3), (2, 4)]

20、如果一個3位數等於其各位數字的立方和,則稱這個數為水仙花數。求1000以內的水仙花數(3位數)

sxh = []
for i in range(100, 1000):
    s = 0
    m = list(str(i))
    for j in m:
        s += int(j)**len(m)
        if i == s:
            sxh.append(i)
print("100-999的水仙花數:%s" % sxh)

# 100-999的水仙花數:[153, 370, 370, 371, 407]