TestProject Python SDK入門
使用TestProject Python SDK,您可以使用TestProject平臺的功能執(zhí)行Selenium和Appium測試。這意味著您將受益于HTML和PDF中的自動測試報告,Selenium瀏覽器驅(qū)動程序的自動更新和配置,協(xié)作報告儀表板,以及更多其他功能。
安裝TestProject Python SDK
TestProject Python SDK是100%免費和開源的,并以PyPI軟件包的形式提供。您可以使用pip安裝軟件包:
pip install testproject-python-sdk這將安裝SDK及其依賴項。為了防止項目之間的版本沖突,建議使用虛擬環(huán)境來開發(fā)測試。
像所有TestProject SDK一樣,Python SDK使用TestProject Agent執(zhí)行測試。該代理負責(zé)瀏覽器驅(qū)動程序的安裝和配置以及發(fā)送TestProject平臺的報告。
默認情況下,SDK將通過其默認地址http://localhost:8585與代理進行通信。如果要在其他端口甚至是完全不同的計算機上運行代理,則可以通過將環(huán)境變量設(shè)置為正確的地址來配置TP_AGENT_URL正確的地址。
配置您的開發(fā)者令牌
要與代理進行通信,您需要開發(fā)者令牌。您可以通過從https://app.testproject.io/#/integrations/sdk獲取令牌,并使用令牌值設(shè)置環(huán)境變量來配置SDK以使用它TP_DEV_TOKEN。
創(chuàng)建您的第一個測試
在安裝和設(shè)置SDK之后,是時候開始編寫我們的第一個測試?
from src.testproject.sdk.drivers import webdriver src.testproject.sdk.drivers import webdriverdef simple_test():def simple_test():driver = webdriver.Chrome()= webdriver.Chrome()driver.get("https://example.testproject.io/web/").get("https://example.testproject.io/web/")driver.find_element_by_css_selector("#name").send_keys("John Smith").find_element_by_css_selector("#name").send_keys("John Smith")driver.find_element_by_css_selector("#password").send_keys("12345").find_element_by_css_selector("#password").send_keys("12345")driver.find_element_by_css_selector("#login").click().find_element_by_css_selector("#login").click()passed = driver.find_element_by_css_selector("#logout").is_displayed()= driver.find_element_by_css_selector("#logout").is_displayed()print("Test passed") if passed else print("Test failed")print("Test passed") if passed else print("Test failed")driver.quit().quit()if __name__ == "__main__":if __name__ == "__main__":simple_test()()
如果您已經(jīng)熟悉用Python開發(fā)基于Selenium的測試,那么這些代碼應(yīng)該不難理解。讓我們運行它,看看會發(fā)生什么!但首先,請確保您的TestProject代理正在運行。?
運行測試
假設(shè)我們剛才看到的示例測試駐留在名為的Python模塊中。由于使用使該模塊可運行,因此我們只需執(zhí)行以下命令即可運行此測試:web_test.pyif?__name__?==?“__main__”
python?web_test.py這將從TestProject代理請求一個Chrome驅(qū)動程序?qū)嵗\行測試并將結(jié)果報告給TestProject平臺。如果您正確配置了開發(fā)人員令牌和代理地址,您將在控制臺中看到以下輸出,表明我們的測試已成功執(zhí)行:
<...>Test passed2020-07-13 09:30:03,884 INFO Connection to Agent at http://127.0.0.1:8585 closed successfullyProcess finished with exit code 0
讓我們看一下生成的報告。
檢查測試報告
TestProject代理將自動將您的測試結(jié)果報告發(fā)送給TestProject平臺。如果您轉(zhuǎn)到https://app.testproject.io/#/reports,則會看到一個名為“?未命名項目?”的項目:

如果單擊此按鈕,則將看到與此項目關(guān)聯(lián)的測試運行的概述。這將包含一個名為“?web_test?”的作業(yè)(該作業(yè)名稱是自動從Python模塊名稱派生的)和一個通過的測試名為“ simple_test?”(測試名稱是從測試方法名稱中自動派生的):

如您所見,該測試被標記為已通過,并且瀏覽器驅(qū)動程序?qū)嵗龍?zhí)行的所有單個操作都直接報告給右側(cè),無需額外配置!
TestProject Python SDK為您提供了多種自定義報告的選項。我們將在后續(xù)文章中詳細介紹這些內(nèi)容(即將發(fā)布!)。不過,值得一提的是,輸入密碼字段的值會自動刪除,如您在報告的第5步中所見。如果需要,也可以關(guān)閉此功能。您將很快在有關(guān)報告的文章中看到。?
支持的單元測試框架
當前,TestProject Python SDK支持unittest和pytest單元測試框架。如果您已經(jīng)有基于unittest?或pytest?的Selenium測試,將它們轉(zhuǎn)換為TestProject驅(qū)動的測試非常容易。
讓我們看一下這個基于pytest?的示例。順便說一下,對于unittest?,該過程是完全相同的:
from selenium import webdriverfrom tests.pageobjects.web import LoginPage, ProfilePagedef test_example_using_chrome():driver = webdriver.Chrome()LoginPage(driver).open().login_as("John Smith", "12345")assert ProfilePage(driver).greetings_are_displayed() is Truedriver.quit()
假設(shè)您已將TestProject SDK添加為項目的依賴項,并且已按照本文前面的說明配置了代理和開發(fā)人員令牌,則只需更改此import語句即可:
from selenium import webdriver#?from src.testproject.sdk.drivers import webdriver
假設(shè)該測試是example_test名為的軟件包中模塊的一部分tests。如果使用以下命令運行此測試:
pytest tests\example_test.py并再次轉(zhuǎn)到TestProject報告頁面,您將看到如下所示的報告:

SDK?分別從測試方法名稱和程序包名稱自動導(dǎo)出了測試名稱('?test_example_using_chrome')和作業(yè)名稱('?example_test?'?)。另外,如果您使用的是pytest?或unittest?,SDK還將根據(jù)測試模塊所在的軟件包自動推斷項目名稱。如果您愿意,也可以自定義項目,作業(yè)和測試名稱。您很快就會在報告文章中看到如何做到這一點。
