为什么要写这篇文章,因为我不想做伸手党,之前在社区提问 pytest 和 rf 优缺点,是因为网上关于 pytest 和 rf 的对比很少,优缺点对比也很少,所以现在该是出来总结一下的时候了,感谢各位大佬的回答
附上之前的提问pytest 和 rf 框架对比
框架 (Framework) 是整个或部分系统的可重用设计,
框架是用来解决代码的组织及运行控制问题的。
在我们编写自动化脚本的时候,经常需要读取配置文件,读取数据文件,发送请求,记录日志,连接并对比数据库数据。每个脚本里都重写一遍各种方法不仅工作量大而且易错。所以我们需要把公共的方法提取出来,封装成单独的模块,放到公用方法包里。另外配置文件,数据文件,日志等我们也需要分类存到不同的文件夹下。这种对公共方法的封装及对脚本及配置文件怎么组织的设计就叫做框架。
同时,一般框架除了完成对代码及配置文件的组织之外还要提供运行的控制功能。比如批量执行,分模块执行,生成报告,异常处理等等。
总结为以下 3 点:
一个完整的测试脚本(用例)一般包含以下几个步骤:
而测试框架一般还要完成用例加载,批量执行,异常控制,结果输出等功能。基础的测试框架一般只提供执行控制方面的功能。
pytest 是一款强大的 python 测试工具,它具有易于上手,功能强大,第三方插件丰富,效率高,可扩展性好,兼容性强等特点,实际上,越来越多的项目开始放弃 unittest 和 nose 以及 robot framework ,转而使用 pytest,比如 Mozilla 和 Dropbox.因为 pytest 可以提供更丰富功能,包括 assert 重写,第三方插件,以及其他测试工具无法比拟的 fixture 模型。
pytest 可以自动找到测试用例执行,并汇报测试结果。它有丰富的基础库,可以大幅度提高用户编写测试用例的效率。它具备非常强的可扩展性,用户可以自己编写插件,或者安装第三方插件。pytest 可以很方便地与其他工具一起使用,比如持续集成、web 自动化测试等。
Pytest 也具有 Robot Framework 所闻名的验收测试能力。Pytest 最好的特性之一是,它提供了测试用例的详细失败信息,使开发者可以快速准确地改正问题。它兼容最新版本的 Python,还兼容 unittest、doctest 和 nose,开箱即用。Pytest 还有各种可用插件来给现有测试技术和测试用例增加更多功能和多样性。事实上,在其活跃社区中有 300 多个可用的插件。该平台设计用于编写更简单,错误率更小的代码。你可以将 Pytest 与诸如 Selenium 和 Splinter 之类的图形用户界面一起使用,来使测试工作更轻松
pytest 优于其他测试框架的地方:
优点
缺点
*** Settings ***
Library RequestsLibrary
Library Collections
*** Test Cases ***
test_get_event_list # 查询发布会(GET请求)
${payload}= Create Dictionary eid=1
Create Session event http://127.0.0.1:8000/api
${r}= Get Request event /get_event_list/ params=${payload}
Should Be Equal As Strings ${r.status_code} 200
log ${r.json()}
${dict} Set variable ${r.json()}
#断言结果
${msg} Get From Dictionary ${dict} message
Should Be Equal ${msg} success
${sta} Get From Dictionary ${dict} status
${status} Evaluate int(200)
Should Be Equal ${sta} ${status}
结果:不考虑,没人愿意这么写接口用例。