請問一下大家,自動化測試編碼結構是怎麼樣的?

小小Prcc發表於2020-08-06

前些天問過大家WPF框架的桌面應用怎麼UI自動化,在此謝謝大家的建議,我都一一嘗試過,最後是用“pywinauto”進行控制元件識別配合“pyautogui”控制滑鼠鍵盤事件解決的。
我現在寫好了一個表單必填項驗證的自動化測試指令碼,用到的模組如下:

pywinauto #控制元件識別
pyautogui #鍵盤滑鼠控制
pytest #測試框架
faker #虛擬資料創造

現在是測試一個有24項必填項的表單,驗證各個必填項是否成功判斷。目前我的編碼結構如下:

# 1.填寫必填項
class Sharp_Instrument_Injury_Required_Fields(object):
# 姓名填寫
def name_fill_in(self):
name_window = self.child("S1","Edit")
name_window.type_keys(str(self.fake.name()))

# 2.刪除必填項
class Required_Missing(Sharp_Instrument_Injury_Required_Fields):
# 查詢姓名填寫項,刪除內容
def gender_not_filled(self):
self.Operation(self.gender,0.7,'click')
# 呼叫判斷方法返回 TrueFalse
return self.faild_fill_in(self.gender_missing,func = self.gender_fill_in)

# 點選儲存按鈕
def save_button(self):
save_button_window = self.window_1.child_window(title="儲存(S)", control_type="Button")
save_button_window.click_input()
pyautogui.press('Enter')

# 失敗判斷
def faild_fill_in(self,image,func,**kw):
# 圖片座標作為引數傳入
filled_missing = self.imagepath(image)
save_succeed = self.imagepath(self.save_succeed)
# 判斷是否"儲存成功"
if save_succeed != None:
self.ensure()
self.required_fields_fill_in()
# self.scroll(6,80)
return 'False'
# 判斷是否"必填項提示"
elif filled_missing != None:
self.ensure()
# 將函式作為引數傳入
func(**kw)
return 'True'
# 判斷是否其他提示
else:
self.ensure()
func(**kw)
return 'Exception'

# 3.pytest測試框架
class Test_Required_Missing(object):
# 驗證姓名空值是否提示“姓名不能為空”
def test_name_missing(self):
r = Required_Missing()
# 斷言
assert r.name_not_filled() == 'True'

我就是這樣三層的模式,操作步驟是“填寫必填項”→“刪除必填項”→“點選儲存按鈕”→“斷言驗證結果”
但不知道是不是正確的,看別人的自動化程式碼,是將測試用例操作步驟放在pytest/unittest框架內的,而我是單獨寫了一個測試用例操作的類,pytest僅用來做斷言,24個必填項就有24個方法。
所以在此想請教大家,測試用例是必須寫在測試框架裡的嗎?還有我這個可以怎麼進行優化呢?還望大家不吝賜教,謝謝!

相關文章