自動化測試框架搭建 面試題

2021-09-24 02:11:28 字數 4632 閱讀 8451

在面試的時候可能要你回答自動化框架的搭建的問題, 當你說會的時候, 可能卻答不上來就尷尬了 。

config

report

test case

logdata

common_method

其中 common_method 是核心 ,提供了共同的方法 讓上邊的 東西能協調起來

以下就只介紹這個:

class config:

def __init__(self, config=config_file):

self.config = yamlreader(config).data

# 返回config 檔案的資料

def get(self, element, index=0):

"""yaml是可以通過'---'分節的。用yamlreader讀取返回的是乙個list,第一項是預設的節,如果有多個節,可以傳入index來獲取。

這樣我們其實可以把框架相關的配置放在預設節,其他的關於專案的配置放在其他節中。可以在框架中實現多個專案的測試。

"""return self.config[index].get(element)

#按照 index 層級 找到 key value

我們用到乙個庫是 jmespath  ,提供了乙個 search 方法 提取json資料, 

json 資料轉化為dict 的方法是 json.loads(body)

import json

import jmespath

class jmespathextractor(object):

"""用jmespath實現的抽取器,對於json格式資料實現簡單方式的抽取。

# ,# "city": "北京",

# "aqi": "91",

# "forecast": [

# ,

# ,

# ,

# ,

#

# ],

# "ganmao": "各項氣象條件適宜,無明顯降溫過程,發生感冒機率較低。", "wendu": "25"

# },

# "status": 1000,

# "desc": "ok"}

j = jmespathextractor()

j_1 = j.extract(query='data.forecast[1].date', body=res.text)

j_2 = j.extract(query='data.ganmao', body=res.text)

print(j_1, j_2)

在介面測試時候為了造資料而造資料是很麻煩,不小心就重複了, 為了 解決這個問題 封裝一些方法。

1)當我們想隨機抽乙個在自己提供的乙個list,  可以這樣封裝 :
def factory_choice_generator(values):

""" 返回乙個生成器函式,呼叫這個函式產生生成器,從給定的list中隨機取一項。 """

def choice_generator():

my_list = list(values)

# rand = random.random()

while true:

yield random.choice(my_list)

#隨機選擇乙個

return choice_generator

2)當我們想要個隨機的字串, 可以這麼寫,

def random_str(min_chars=0, max_chars=8):

"""長度在最大值與最小值之間的隨機字串"""

return fake.pystr(min_chars=min_chars, max_chars=max_chars)

3)當我們想要個隨機的手機號, 位址, email 都可以用 fake 庫來實現 ,

import random

from faker import factory

fake = factory().create('zh_cn')

def random_phone_number():

"""隨機手機號"""

return fake.phone_number()

def random_name():

"""隨機姓名"""

return fake.name()

def random_address():

"""隨機位址"""

return fake.address()

def random_email():

"""隨機email"""

return fake.email()

用到了logging 庫 和 from logging.handlers   import timedrotatingfilehandler
**如下:

import os

import logging

from logging.handlers import timedrotatingfilehandler

from utils.config import log_path

class logger(object):

def __init__(self, logger_name='framework'):

self.logger = logging.getlogger(logger_name)

logging.root.setlevel(logging.notset)

self.log_file_name = 'test.log'

self.backup_count = 5

# 日誌輸出級別

self.console_output_level = 'warning'

self.file_output_level = 'debug'

# 日誌輸出格式

self.formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

def get_logger(self):

"""在logger中新增日誌控制代碼並返回,如果logger已有控制代碼,則直接返回"""

if not self.logger.handlers: # 避免重複日誌

console_handler = logging.streamhandler()

console_handler.setformatter(self.formatter)

console_handler.setlevel(self.console_output_level)

self.logger.addhandler(console_handler)

# 每天重新建立乙個日誌檔案,最多保留backup_count份

file_handler = timedrotatingfilehandler(filename=os.path.join(log_path, self.log_file_name),

when='d',

interval=1,

backupcount=self.backup_count,

delay=true,

encoding='utf-8'

)file_handler.setformatter(self.formatter)

file_handler.setlevel(self.file_output_level)

self.logger.addhandler(file_handler)

return self.logger

logger = logger().get_logger()

report = report_path + '\\測試報告.html'

test_suite = unittest.defaulttestloader.discover('.', pattern='test*.py')

result = beautifulreport(test_suite)

result.report(filename='測試報告', description='測試deafult報告', log_path=report_path)

自動化測試面試題

4 contains text,登入 是什麼意思 答這是xpath查詢登入按鈕的0分,這是查包含登入關鍵字的所有元素加1分 5 自動化遇到用例fail掉如何排查故障 答 不明白你說的什麼意思0分,沒看出錯log的0分,如果能按層次說清楚排查失敗 手工查應用是否真的有bug,確認不是bug,是不是新版...

自動化測試面試題目

linux linux中如何實現分割槽 a.建立以根目錄為掛在點的分割槽 選中空閒區,點選建立,選擇標準分割槽,點選建立。掛在點選擇 檔案型別選擇ext4 勾選使用全部可用空間,點選確定 b.建立swap分割槽 選中空閒區,點選建立,選擇標準分割槽,點選建立。檔案型別選擇swap交換 大小控制為記憶...

python自動化測試面試題

零基礎轉行測試 631450326第一階段 1 列表與元組的區別 2 http的請求流程是怎麼樣的 3 你怎麼理解token,cookie,session 4 怎麼獲取token,中間會使用到那些思路 5 如果乙個介面存在引數的關聯,怎麼解決,如何實現的 6 乙個ui的定位存在iframe框架,怎麼...