TestProject Python SDK入门

软件测试test

共 3706字,需浏览 8分钟

 ·

2020-08-01 02:58

使用TestProject Python SDK,您可以使用TestProject平台的功能执行Selenium和Appium测试这意味着您将受益于HTML和PDF中的自动测试报告,Selenium浏览器驱动程序的自动更新和配置,协作报告仪表板,以及更多其他功能


安装TestProject Python SDK

TestProject Python SDK是100%免费和开源的,并以PyPI软件包的形式提供。您可以使用pip安装软件包:

pip install testproject-python-sdk

这将安装SDK及其依赖项。为了防止项目之间的版本冲突,建议使用虚拟环境来开发测试。

像所有TestProject SDK一样,Python SDK使用TestProject Agent执行测试该代理负责浏览器驱动程序的安装和配置以及发送TestProject平台的报告。

默认情况下,SDK将通过其默认地址http://localhost:8585与代理进行通信如果要在其他端口甚至是完全不同的计算机上运行代理,则可以通过将环境变量设置为正确的地址来配置TP_AGENT_URL正确的地址。

配置您的开发者令牌

要与代理进行通信,您需要开发者令牌。您可以通过从https://app.testproject.io/#/integrations/sdk获取令牌,并使用令牌值设置环境变量来配置SDK以使用它TP_DEV_TOKEN

创建您的第一个测试

在安装和设置SDK之后,是时候开始编写我们的第一个测试?

from src.testproject.sdk.drivers import webdriver src.testproject.sdk.drivers import webdriver
def 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()()

如果您已经熟悉用Python开发基于Selenium的测试,那么这些代码应该不难理解。让我们运行它,看看会发生什么!但首先,请确保您的TestProject代理正在运行。 

运行测试

假设我们刚才看到的示例测试驻留在名为的Python模块中由于使用使该模块可运行,因此我们只需执行以下命令即可运行此测试:web_test.pyif __name__ == __main__

python web_test.py

这将从TestProject代理请求一个Chrome驱动程序实例,运行测试并将结果报告给TestProject平台。如果您正确配置了开发人员令牌和代理地址,您将在控制台中看到以下输出,表明我们的测试已成功执行:

<...>Test passed2020-07-13 09:30:03,884 INFO Connection to Agent at http://127.0.0.1:8585 closed successfully
Process finished with exit code 0

让我们看一下生成的报告。

检查测试报告

TestProject代理将自动将您的测试结果报告发送给TestProject平台。如果您转到https://app.testproject.io/#/reports,则会看到一个名为“ 未命名项目 ”的项目

如果单击此按钮,则将看到与此项目关联的测试运行的概述。这将包含一个名为“ web_test ”的作业(该作业名称是自动从Python模块名称派生的)和一个通过的测试名为“ simple_test ”(测试名称是从测试方法名称中自动派生的):

如您所见,该测试被标记为已通过,并且浏览器驱动程序实例执行的所有单个操作都直接报告给右侧,无需额外配置!

TestProject Python SDK为您提供了多种自定义报告的选项我们将在后续文章中详细介绍这些内容(即将发布!)。不过,值得一提的是,输入密码字段的值会自动删除,如您在报告的第5步中所见。如果需要,也可以关闭此功能。您将很快在有关报告的文章中看到。 

支持的单元测试框架

当前,TestProject Python SDK支持unittestpytest单元测试框架。如果您已经有基于unittest pytest 的Selenium测试,将它们转换为TestProject驱动的测试非常容易。

让我们看一下这个基于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 True    driver.quit()

假设您已将TestProject SDK添加为项目的依赖项,并且已按照本文前面的说明配置了代理和开发人员令牌,则只需更改此import语句即可:

from selenium import webdriverfrom src.testproject.sdk.drivers import webdriver

假设该测试是example_test名为的软件包中模块的一部分tests如果使用以下命令运行此测试:

pytest tests\example_test.py

并再次转到TestProject报告页面,您将看到如下所示的报告:

SDK 分别从测试方法名称和程序包名称自动导出了测试名称(' test_example_using_chrome')和作业名称(' example_test ' )。另外,如果您使用的是pytest unittest ,SDK还将根据测试模块所在的软件包自动推断项目名称。如果您愿意,也可以自定义项目,作业和测试名称。您很快就会在报告文章中看到如何做到这一点

推荐阅读


浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报