今天给大家分享一个简单易操作的实战项目(已开源)
项目名称
ET开源商场系统
项目描述
ETshop是一个电子商务B2C电商平台系统,功能强大,安全便捷。适合企业及个人快速构建个性化网上商城。
包含PC+IOS客户端+Adroid客户端+微商城,系统PC+后台是基于ThinkPHP MVC构架开发的跨平台开源软件,设计得非常灵活,具有模块化架构体系和丰富的功能,易于与第三方应用系统无缝集成,在设计上,包含相当全面,以模块化架构体系,让应用组合变得相当灵活,功能也相当丰富。
实现目标
-
需求分析
-
挑选适合做自动化测试的功能
-
设计测试用例
-
搭建自动化测试环境 [可选]
-
设计自动化测试项目的架构 [可选]
-
编写代码
-
执行测试用例
-
生成测试报告并分析结果
项目架构
用例设计
掌握如何编写自动化测试用例文档
编写自动化测试用例的原则
自动化测试用例一般只实现核心业务流程或者重复执行率较高的功能。
自动化测试用例的选择一般以“正向”逻辑的验证为主。
不是所有手工用例都可以使用自动化测试来执行。
尽量减少多个用例脚本之间的依赖。
自动化测试用例执行完毕之后,一般需要回归原点。
编写测试用例
项目搭建
1.新建项目
项目名称:webAutoTestETshop
2.创建目录结构
安装 selenium 包
安装 parameterized 包添加 HTMLTestRunner
初始化代码
封装驱动工具类
封装PO基类,定义 BasePage 和 BaseHandle
编写代码
目标
-
掌握如何采用PO模式的分层思想对页面进行封装
-
掌握如何使用UnitTest管理项目中的测试用例
抽取PO
根据用例分析待测功能,提取页面对象
- 定义页面对象文件
登录页:login_page.py首页:index_page.py
后台页面(个人中心页):home_page.py商品搜索页:goods_search_page.py商品详情页:goods_detail_page.py购物车页:cart_page.py
下订单页:order_page.py
订单支付页:order_pay_page.py我的订单页:my_order_page.py
-
分别编写对象库层、操作层、业务层的代码
-
编写测试脚本
-
定义测试脚本文件
登录模块:test_login.py购物车模块:test_cart.py订单模块:test_order.py
-
执行测试脚本
-
使用unittest执行测试脚本
-
调试代码
完善代码
目标
-
掌握如何把数据驱动应用到项目中
-
能够把日志收集功能应用到项目中
-
掌握如何使用UnitTest生成测试报告
数据驱动
定义数据文件
定义存放测试数据的目录,目录名称:data
分模块定义数据文件
登录模块:login.json购物车模块:cart.json订单模块:order.json
- 根据业务编写用例数据
1.2测试数据参数化
修改测试脚本,使用 parameterized 实现参数化
日志收集
使用logging模块实现日志的收集
import logging.handlers import os
工程目录
BASE_DIR = os.path.dirname(os.path.abspath( file ))
def init_log_config(): “”"
初始化日志配置
“”"
日志输出格式
fmt = “%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(messag e)s”
创建日志器
logger = logging.getLogger() logger.setLevel(logging.INFO)
创建格式化器
formatter = logging.Formatter(fmt)
输出到控制台
sh = logging.StreamHandler() sh.setFormatter(formatter) logger.addHandler(sh)
输出到文件,每日一个文件
log_path = os.path.join(BASE_DIR, “log”, “tpshop.log”)
fh = logging.handlers.TimedRotatingFileHandler(log_path, when=‘MIDNIGHT’, interval=1
, backupCount=3) fh.setFormatter(formatter) logger.addHandler(fh)
生成测试报告
使用HTMLTestRunner生成测试报告
report_file = “./report/report{}.html”.format(time.strftime("%Y%m%d-%H%M%S")) with open(report_file, “wb”) as f:
runner = HTMLTestRunner(f, title=“ET商城自动化测试报告”, description="Win10.Fire
fox")
runner.run(suite)
鉴于篇幅所限,无法把整个项目一一详细阐述,需要这个web自动化测试项目的朋友可以关注公众号【 程序员小野 】自行领取。
以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。关注我公众号:【 程序员小野 】,免费获取!
机会只垂青有准备的人,这是一个靠本事的社会。有时候,你之所以发展得不好,不是因为没有机遇,而是因为你没有准备好,导致机遇与你擦肩而过。如果你想要学习,什么时候开始都不晚,而不是瞻前顾后,你只要用尽全力,剩下的交给时间!如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们扣扣群【779450660】,里面有各种软件测试资源和技术讨论。
加油吧,测试人!路就在脚下,成功就在明天!