相关:lounger自动化测试框架
首先,我的 pypi(Python Package Index) 账号找回来了,github的 issues 和 邮件沟通花了两周多的时间。
其次,lounger 肯定不是太监项目,一开源,骗几个不要钱的 star 就不管的那种。于是,我来带来的第一个版本。
lounger的定位
这里有必要说明一下 lounger 的定位:
以电脑为例,芯片是 intel/AMD 生产的,内存是三星/金士顿等生产的,我干嘛不买回来零件自己DIY?为啥要买品牌电脑厂商的电脑?
电脑厂商,如华为/某想,他们主要技术体现在 设计与集成,散热和能效,外观设计和制造工艺,软件与生态系统,售后服务与支持 等。
lounger的定位参考电脑厂商的定位,虽然 pytest 是现成的框架,playwright也是现成的测试工具。整合到一起总有些工作要做。例如:playwright 运行用例失败需要截图在 pytest-html 生成的HTML报告中显示失败位置的截图,我们需要手动在 conftest.py进行 pytest_runtest_makereport()
钩子函数的配置,新手也不定了解这其中的细节,既然这是最常见的需求,lounger就默认帮你做了。
此外,还有 数据库操作
、 数据驱动支持数据文件
, 生成随机测试数据
等也是最常用的一些功能,lounger也会直接提供相关的API,减少重复的工作来做这些事情,专注于用例本身的编写。
Web UI 测试,直接使用 pytest-playwright 的 API 即可,他已经足够好用,而且还提供了丰富的断言。
HTTP接口测试,直接使用 pytest-req 的 API 即可,也提供了相关的断言方法。
我之所以单独开发 pytest-req 库,是希望他和 pytest-playwright 一样,作为一个独立的项目存在,是为了与 lounger保持解耦,使lounger的定位更清晰。
下面是 0.1.0
版本的架构:
安装
-
已支持pip安装。
> pip install lounger
此外,如果做Web自动化测试,请单独安装测试浏览器。
playwright install chromium[可选]
playwright install firefox[可选]
playwright install webkit[可选]
...
lounger 0.1.0 版本功能
lounger 到底支持了哪些功能?我还真不知道如何罗列他的功能点。于是,我拿他和 seldom 做个功能对比。相信通过对比,你就知道lounger有哪些亮点和功能了。
-
seldom
seldom 是建立在 unittest单元测试框架的基础上的自动化测试框架,内置了非常多的功能达到开箱即用,并且支持 seldom-platform平台化。
seldom有一些先天的不足,例如在 并发执行方面,内置selenium的运行较慢等。
-
lounger
lounger 是建立在 pytest 单元测试框架的基础上的自动化测试框架,移植了seldom的部分功能,结合pytest的功能和生态优势开发,同样达到开箱即用。
lounger也并非完美无缺,内置的
pytest-html
样式和功能还有改进空间,不支持平台化。
注:allure 显然是更好用的,但是,需要单独安装 allure
命令去启动一个Web服务才能查看报告,这本身就不符合 lounger
的定位,对吧!当然,你完全可以自行选择使用allure。
这里仅罗列功能对比,至于选哪个,请自行结合业务和需求。
功能 | seldom | 说明(3.9.0版本) | lounger | 说明(0.1.0版本) |
---|---|---|---|---|
基于单元框架 | 🪨 | unittest | 🪨 | pytest |
web UI测试 | ✅ | 集成selenium,并二次开发 I️ | ✅ | 集成 pytest-playwright |
web UI断言 | ✅ | 内置(assertText、assertTitle、assertElement)等 | ✅ | playwright 提供丰富断言 |
Page Object模式 | ❌ | 未内置,推荐 poium 库 | ❌ | 未内置,推荐 poium 库 |
API 测试 | ✅ | 集成Requests,并二次开发 | ✅ | 集成 pytest-req |
API 断言 | ✅ | 内置(assertJSON、assertPath、assertSchema)等 | ✅ | pytest-req 提供断言 |
App UI测试 | ✅ | 集成Appium,并二次开发 I️ | ❌ | 未集成App测试库 |
脚手架 | ✅ | 支持快速创建Web/App/API项目 | ✅ | 支持快速创建Web/API项目 |
HTML测试报告 | ✅ | 集成XTestRunner支持 | ✅ | 集成 pytest-html 支持 |
HTML显示失败截图 | ✅ | 用例 失败 / 错误 自动截图 | ✅ | lounger已对 pytest-html 进行了默认配置 |
HTML显示日志 | ✅ | Seldom默认支持 | ✅ | lounger已对 pytest-html 进行了默认配置 |
XML测试报告 | ✅ | 集成XTestRunner支持 | ✅ | 自带 --junit-xml 参数支持 |
log日志 | ✅ | 集成 luguru | ✅ | 集成 luguru |
发送测试结果/消息 | ✅ | 支持(email、钉钉、飞书、微信)等 | ❌ | 不支持 |
失败重跑 | ✅ | 使用 rerun 参数配置 | ✅ | 集成 pytest-rerunfailures |
随机测试数据 | ✅ | 支持 testdata | ✅ | 支持 testdata |
数据库操作 | ✅ | 支持(sqlite3、MySQL、SQL Server)等 | ✅ | 支持(sqlite3、MySQL、SQL Server)等 |
cache缓存 | ✅ | 内置(cache、memorycache、discache)等 | ✅ | 内置(cache、memorycache、discache)等 |
用例依赖 | ✅ | 内置 @depend() | ✅ | 内置 @pytest.mark.dependency() |
用例分类标签 | ✅ | 内置 @label() | ✅ | 支持 @pytest.mark.xxx 标签 |
数据驱动方法 | ✅ | 内置 @data() | ✅ | 内置 @data() |
数据驱动文件 | ✅ | 内置 @file_data() 支持(JSON\YAML\CSV\Excel)等 | ✅ | 内置 @file_data() 支持(JSON\YAML\CSV\Excel)等 |
钩子函数 | ✅ | confrun.py 用例运行钩子 | ✅ | conftest.py 、 pytest.ini 等功能更强大 |
命令行工具CLI | ✅ | seldom 命令 | ✅ | lounger 命令 |
并发执行 | ⚠️ | 内置 @threads 手动分配线程 | ✅ | 集成 pytest-xdist ,自动分配,更强大 |
平台化 | ✅ | 支持(seldom-platform)平台 | ❌ | 不支持 |
第三方插件 | ⚠️ | 插件很少,扩展能力差。 | ✅ | 有上千个插件,扩展能力强 |
说明
-
✅ : 表示支持。
-
❌ : 表示不支持。
-
⚠️ : 表示支持的不好(或没有对方好)。
lounger 提供的大部分能力都是 pytest
、 playwright
、 requests
等框架或库本身的功能。所以,熟悉这些技术的话,lounger对于你几乎是零成本的。
你可以在项目的 tests
目录下看到各种使用测试示例。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。