iT邦幫忙

0

Python 問題請教

  • 分享至 

  • xImage

最近寫了一套自動化測試有問題想請教

 AuditRecord = (By.XPATH ,'') #稽核紀錄

    OddNumber = (By.XPATH, "") #單號

    CreateTask = (By.XPATH, "") #建立任務

    def Confirm_audit_record(self):
        EX1 = self.browser.find_element(*self.AuditRecord)
        self.browser.execute_script("arguments[0].click();", EX1)
        time.sleep(2)
        ODD = '123'
        assert self.browser.find_element(*self.OddNumber).text == ODD  
        assert self.browser.find_element(*self.CreateTask).text == '建立任務'
    

    AuditRecord = (By.XPATH ,'') #稽核紀錄

    OddNumber = (By.XPATH, "") #單號

    CancelTask = (By.XPATH, "") #取消任務

    def Confirm_cancel_record(self):
        EX1 = self.browser.find_element(*self.AuditRecord)
        self.browser.execute_script("arguments[0].click();", EX1)
        time.sleep(2)
        ODD = '123'
        assert self.browser.find_element(*self.OddNumber).text == ODD   
        assert self.browser.find_element(*self.CancelTask).text == '已取消'


    
    AuditRecord = (By.XPATH ,'') #稽核紀錄

    OddNumber = (By.XPATH, "") #單號

    CompletedTask = (By.XPATH, "") # 完成任務

    
    def Confirm_completed_record(self,):
        EX1 = self.browser.find_element(*self.AuditRecord)
        self.browser.execute_script("arguments[0].click();", EX1)
        time.sleep(2)
        
        ODD = '123'
        assert self.browser.find_element(*self.OddNumber).text == ODD   
        assert self.browser.find_element(*self.CompletedTask).text == '已完成'

我想拉一個變數來統一修改ODD裡面的值,這樣我就不用一個一個去改,請問各位大神我該用pytest.fixture做嗎?還是有更好的辦法?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
menghuiguli
iT邦新手 5 級 ‧ 2023-06-27 11:52:41

您可以使用pytest.fixture來定義一個ODD變數,然後在測試函數中使用它。這樣您就可以在一個地方修改ODD的值,而不需要在每個測試函數中進行更改。

以下是一個範例程式碼:

import pytest

class TestAuditRecord:
    AuditRecord = (By.XPATH ,'') #稽核紀錄
    OddNumber = (By.XPATH, "") #單號
    CreateTask = (By.XPATH, "") #建立任務
    CancelTask = (By.XPATH, "") #取消任務
    CompletedTask = (By.XPATH, "") #完成任務

    @pytest.fixture(params=['123', '456']) # 定義ODD變數並使用pytest.fixture
    def odd_number(self, request):
        return request.param

    def test_confirm_audit_record(self, odd_number):
        EX1 = self.browser.find_element(*self.AuditRecord)
        self.browser.execute_script("arguments[0].click();", EX1)
        time.sleep(2)
        assert self.browser.find_element(*self.OddNumber).text == odd_number
        assert self.browser.find_element(*self.CreateTask).text == '建立任務'

    def test_confirm_cancel_record(self, odd_number):
        EX1 = self.browser.find_element(*self.AuditRecord)
        self.browser.execute_script("arguments[0].click();", EX1)
        time.sleep(2)
        assert self.browser.find_element(*self.OddNumber).text == odd_number
        assert self.browser.find_element(*self.CancelTask).text == '已取消'

    def test_confirm_completed_record(self, odd_number):
        EX1 = self.browser.find_element(*self.AuditRecord)
        self.browser.execute_script("arguments[0].click();", EX1)
        time.sleep(2)
        assert self.browser.find_element(*self.OddNumber).text == odd_number
        assert self.browser.find_element(*self.CompletedTask).text == '已完成'
       

在上面的程式碼中,我們在TestAuditRecord類中定義了一個odd_number pytest.fixture,並設置了兩個參數值('123'和'456')。然後,在每個測試函數中,我們使用odd_number作為單號ODD的值,使用assert語句檢查測試結果。如果您需要更改ODD的值,只需在odd_number的params中添加/刪除參數即可。

ldd77 iT邦新手 5 級 ‧ 2023-06-28 13:37:51 檢舉

感謝回答

我要發表回答

立即登入回答