最近寫了一套自動化測試有問題想請教
 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做嗎?還是有更好的辦法?
您可以使用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中添加/刪除參數即可。