自动化测试实战项目的重构说明
前言
最近好多人和我反应我GitHub上的项目实战代码都运行不了,我简单的看了一下几个人的错误信息,多数是因为开发环境,126邮箱升级或者代码本身的问题导致的,正好赶上周末,花费了2天的时间把能运行的几个项目简单的重新写了一下,这里主要是126邮箱的项目, 其他的几个包括接口和其他Ui测试的项目我实在是不能提供数据库信息和被测网站的帐号信息给你们使用,因此是无法运行的,这里说声抱歉,但是代码我还是开放在GitHub上的,虽然无法运行,但是也具有一定的学习价值,接下来说说能运行的几个项目我改了什么,以便想学习的同学能够顺利的运行代码。
关键字驱动测试实战
GItHub地址
https://github.com/13691579846/KeyWordDriverTestFrameWork
博客地址
修改内容
. 修改了整个项目的代码命名规范及代码编写规范,使其更加符合PEP8
. 修改了登录功能的测试步骤,由于126邮箱升级,登录页面添加了是选择扫码登录还是帐号密码登录,因此用例添加了选择帐号密码登录这一步骤
. 新添加了部分用例及修改了有时用例被标记为N或者Y时代码报错的问题
. 放弃了使用模拟键盘结合剪切版实现上传文件的方式(不稳定),改用了selenium提供的send_keys方法(之前没注意,今天改的时候才发现可以直接send_keys)
. 关键字数据驱动测试可以应用到RobotFrame框架中,所以学习本项目对于学习RF也比较有用,当然让这个项目的主要目的还是为了理解关键字驱动的概念
数据驱动测试实战
GitHub地址
https://github.com/13691579846/DataDriverTestFrameWork
博客地址
修改内容
. 修改了整个项目的代码命名规范及代码编写规范,使其更加符合PEP8
. 修改了登录功能的测试步骤,由于126邮箱升级,登录页面添加了是选择扫码登录还是帐号密码登录,因此用例添加了选择帐号密码登录这一步骤
. 重构了部分目录结构,添加了base.py文件,使其项目比较符合PageObject的设计模式
. 重构了用例的执行逻辑,使其不只能够单向运行,可以选择哪些用例执行哪些用例不执行
. 添加了失败用例截图的功能
. 本项目主要了解数据驱动的思想,对学习unittest等测试框架的数据驱动有一定帮助
Pytest框架测试实战
GitHub地址
https://github.com/13691579846/PytestAutoTestFrameWork
博客地址
修改内容
. 修改了整个项目的代码命名规范及代码编写规范,使其更加符合PEP8
. 修改了登录功能的测试步骤,由于126邮箱升级,登录页面添加了是选择扫码登录还是帐号密码登录,因此用例添加了选择帐号密码登录这一步骤
. 对所有用例进行了拆分,取消了使用嵌套if来判断执行结果时选择使用哪个断言方法,根据系统对输入不同数据时给出的提示信息不同,对测试数据进行了分组,也对用例进行了 分组,使其逻辑性及用例的可读性更强
. 放弃了使用模拟键盘结合剪切版实现上传文件的方式(不稳定),改用了selenium提供的send_keys方法(之前没注意,今天改的时候才发现可以直接send_keys)
. 添加了失败重跑的机制,主要通过pytest-rerunfailures插件并添加命令行选择的方式实现
. 修改了测试用例目录下的conftest.py文件,把执行用例前后的条件分开管理,使逻辑更加清晰
. 删除了pytest-html生成测试报告时,报告中存在无用的link列
. 放弃了由excel管理测试数据,改为指定的py文件来管理数据,主要为了操作简单.
. Pytest框架实现的这个项目相对前两个项目,更加灵活,更加全面,难度也比较大,希望对想学习pytest测试框架的你有一定的帮助
unittest框架测试实战
GitHub地址
https://github.com/13691579846/Petrochina_Retail_Test_Project
博客地址
这个项目没有做任何修改, 因为项目本身有网络的限制,所以改不改也没什么必要,大家用来作为参考就好了
总结
. 以上4个项目仅供学习使用,项目中使用的126邮箱帐号是我自己本人的,所以大家尽量不要使用我的帐号来测试,改成自己的帐号
. 所有的项目均有改进的空间,大家可以在了解了项目的基础上自己动手修改不足的代码,或者根据自己的想法重构整个代码
. 能够执行的3个项目我都添加了环境管理文件requirements.txt,如果你clone了本项目,只要在项目目录下执行 pip install -r requirements.txt 命令即可自动安装本项目使用的所有第三方依赖库-注意:最好是为项目新键一个空白的虚拟环境,在虚拟环境下安装项目使用的库,避免本地环境和项目环境冲突,导致无法成功运行
. 提示:126邮箱本身如果频繁的登录和发送邮件时,都会有验证码验证,即使你代码中清理的cookies也是,所以给自动化带来了很多麻烦,因此尽量保证项目中有限的测试数据即可,对于学习来说也足够了
. 最后,希望成功的路上有我的影子! 欢迎加群大家一起学习讨论:QQ878565760