iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Python

利用Python完成自動化測試專案系列 第 21

D21 實作發文測試

  • 分享至 

  • xImage
  •  

大致介紹完 pytest 後,今天要把之前的發文自動化延伸,實作測試是否成功發文。

策略

這次主要是測試有沒有發文成功,而 iThelp 的儲存草稿功能一樣會顯示在我的文章,只是以草稿的形式並沒有真的發出來,所以這次我們會把最後發文的步驟修改成點擊儲存草稿,並到我的發文檢查有沒有發文成功。

增加 locator

首先我們在發文的 page 增加新增操作對應的 locator

# 儲存草稿 self.save_draft = (By.XPATH, "//button[@class='btn btn-draft save-group__btn']")
# 個人帳號頭貼  self.account_icon = (By.XPATH, "//img[@class='img-circle menu__avatar-img']")
# 我的發文 self.my_article = (By.XPATH, "//a[text()='我的發文']")

然後在下面做出對應的操作

def post_article(self, subject, article):
    self.input_text(self.subject, subject)
    self.actions_input_text(self.article, article)
    self.click_element(self.save_draft)
        
def go_to_my_article(self):
    self.click_element(self.account_icon)
    self.click_element(self.my_article)

在發文的部分把發文修改成儲存草稿,並新增前往我的文章的操作。

新增 page

由於我的發文也算一種 page,所以我們會新增myarticle_page.py檔,在裡面處理發文是否成功。

class MyArticlePage(BasePage):
    def __init__(self, browser):
        super().__init__(browser)
        self.first_article_title = (By.XPATH, "(//div[@class='qa-list profile-list'])[1]/descendant::a[@class='qa-list__title-link']")

通常最新發布的文章或草稿都會在我的文章的最上面,所以我們可以找第一個文章的標題,檢查是否與預期的標題符合。

這邊我們會用到把元素內文字轉成text,所以 page_base 要新增相關邏輯:

def get_element_text(self, locator):
        """取得元素文字"""
        element = self.find_element_visible(locator)
        return element.text

然後利用 assert 驗證標題是否相同

def check_article_title(self, title):
        article_title = self.get_element_text(self.first_article_title)
        assert title == article_title

這樣就完成了,下次預計介紹報表相關內容。


上一篇
D20 pytest 插件(3)
下一篇
D22 測試報表- pytest-html
系列文
利用Python完成自動化測試專案23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言