当pytest遇上poium会擦出什么火花

pytest遇上poium会擦出什么火花

首先,创建一个test_sample/test_demo.py 文件,写入下面三行代码。

  1. def test_bing(page):

  2. page.get("https://www.bing.com")

  3. assert page.get_title == "必应"

不要问题 page 从哪里来,打开终端进入test_sample/目录,执行pytest 命令。

  1. ❯ pytest

  2. ================================================= test session starts =================================================

  3. platform win32 -- Python 3.8.6, pytest-6.2.4, py-1.10.0, pluggy-0.13.1

  4. benchmark: 3.2.3 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)

  5. rootdir: D:\github\test-circle\seldom\test_sample

  6. plugins: allure-pytest-2.8.40, base-url-1.4.2, benchmark-3.2.3, html-3.1.1, metadata-1.11.0, rerunfailures-9.1.1, seldom-0.0.3

  7. collected 1 item

  8. test_case.py

  9. DevTools listening on ws://127.0.0.1:63137/devtools/browser/32d7e69d-69b5-4e0c-b0df-0e1d1d37af46

  10. . [100%]

  11. ================================================== 1 passed in 4.75s ==================================================

是不是觉得做UI自动化超级简单,并好奇是怎么做到的,别急,我画个图帮你理解。

说明

  • poium: poium集成了selnium/appium并提供一套UI自动化测试的API。
  • pytest: 强大的自动化测试框架,背后有一个丰富的生态,使用pytest就可以使用他背后的各种插件。
  • seldom-pytest: 这是我开发的粘合剂,将poium和 pytest,以及pytest背后的插件粘合到一起。
  • UI 自动化项目: 站在seldom-pytest的基础上编写你的UI自动化项目。

seldom-pytest设计思想

如上图所示,在seldom-pytest中,核心只需要编写两类文件。

  • conftest.py: 这是pytest的配置文件,功能非常强大,你可以在里面写各种钩子函数。如前面的例子,page就是一个钩子函数。

  • test_xxx.py: 这是你的用例文件,你只需要引用各种钩子函数来完成用例即可。

seldom-pytest 实战

其实,seldom-pytest 并没有做什么事情,几乎也没有提供API,更多是的提倡一个设计思想。我们来举个例子说明哈。

  1. 创建一个test_sample/conftest.py 文件。
  2. import pytest

  3. from poium import Page, Element

  4. class BaiduPage(Page):

  5. search_input = Element(id_="kw", describe="搜索框")

  6. search_button = Element(id_="su", describe="搜索按钮")

  7. settings = Element(css="#s-usersetting-top", describe="设置")

  8. search_setting = Element(css="#s-user-setting-menu > div > a.setpref", describe="搜索设置")

  9. save_setting = Element(link_text="保存设置", describe="保存设置")

  10. @pytest.fixture(scope="module", autouse=True)

  11. def baidu_page(page):

  12. return BaiduPage(page)

  • BaiduPage 类主要通过poium封装元素定位。

  • baidu_page 将BaiduPage类封装为一个钩子函数。

  1. 修改一个test_sample/test_demo.py 文件,代码如下:
  2. def test_baidu_search(baidu_page, base_url):

  3. """

  4. 搜索

  5. """

  6. baidu_page.get(base_url)

  7. baidu_page.search_input.send_keys("pytest")

  8. baidu_page.search_button.click()

  9. baidu_page.sleep(2)

  10. assert baidu_page.get_title == "pytest_百度搜索"

test_demo.py文件不需要导入任何模块。可以直接调用钩子函数baidu_page 、base_url 实现自动化测试用例。

  1. 如何运行用例,交给pytest 即可。
  2. # 运行测试 (默认chrome)

  3. > pytest

  4. # 指定不同的浏览器 (chrome/gc, firefox/ff, safari)

  5. > pytest --browser chrome

  6. > pytest --browser firefox

  7. > pytest --browser safari

  8. # 指定base-url

  9. > pytest --base-url https://www.baidu.com

  10. # 生成测试报告

  11. > pytest --html ./report.html

当然,你也可以创建一个run.py文件来使用pytest。

  1. import pytest

  2. pytest.main([

  3. "--browser=firefox",

  4. "--html=./report.html",

  5. "--base-url=https://www.baidu.com"

  6. ])

只需要运行该文件即可。

> python run.py

关于conftest文件

  1. conftest.py 用来实现钩子函数的,我把xxPage类定义在里面有点奇怪,当然,你也可以单独封装一层,只在conftest.py实现xx_page钩子函数即可。

  2. 一个项目中每个目录下都可以有一个conftest.py文件。每个conftest.py文件作用于当前目录以及子目录。我们可以充分利用这个特点。

  3. test_sample/

  4. ├── test_aa/

  5. │ ├── conftest.py

  6. │ ├── test_aa.py

  7. ├── test_bb/

  8. │ ├── conftest.py

  9. │ └── test_bb.py

  10. └── test_cc/

  11. │ ├── conftest.py

  12. │ └── test_cc.py

  13. ├── conftest.py

  14. ├── pytest.ini

  15. └── run.py

如果定义的xxPage类会被所有测试用例用到,那么就放到根目录;如果只会被某个测试用例用到,那么就放到和他平级的目录。

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值