第五天 整合多个脚本,封装公共模块,数据库,数据分离,打印日志
第六天 logging日志模块,日志信息优化,截图,用例批量执行,补充优化,定时任务
实战演练 (ecshop项目)
1.项目环境搭建:
1.解压xapmm到C盘根目录,打开C:\xampp\xampp-control.exe,启动Apache和MySQL服务
2.如果Apache服务启动失败,修改C:\xampp\apache\conf\httpd.conf 里面的端口(默认为80,假设改为8000),
修改C:\xampp\apache\conf\extra\httpd-ssl.conf 里面的端口(默认443,假设改为4433)
3.如果MySQL服务启动失败,修改C:\xampp\mysql\bin\my.ini 里面的端口(默认3306)
4.将upload.zip解压后的文件夹改名为ecshop,移动到C:\xampp\htdocs 里面。
5.查看本机IP(假如为192.168.0.110),浏览器打开 192.168.0.110:8000/ecshop,根据页面提示安装即可
6.安装时注意:数据库搜一下选择test后覆盖,数据库用户名默认root,密码默认为空,页面底部注意安装测试数据
7.连接mysql时,如果报1130错误,需要在C:\xampp\mysql\bin\my.ini 里面,
[mysqld]下面增加一句话:skip-grant-tables
如果报1045-Access denied for user 'root'@'localhost'错误,需要打开DOS窗口,切换到C:\xampp\mysql\bin,
先输入mysql -u root -p或mysql -uroot登录,
再输入grant all privileges on *.* to 'root'@'%' identified by '123456'; 表示可以给所有ip都设定root登陆了,
其中%也可替换成本机ip或localhost,123456也可以改成别的密码
最后输入flush privileges; 刷新授权,之后重启mysql服务(win需要到任务器才能彻底关闭)
https://blog.csdn.net/qq_42036869/article/details/84671466
https://blog.csdn.net/tspangle/article/details/37761147
2.线性化脚本
注意安装mysql-connector
3.封装相同步骤
4.测试数据与脚本分离
5.创建工程(引入PO设计模式)
PO设计模式,全称是Page Object,是一种自动化测试的设计模式,它将元素定位、业务操作和测试用例分开。
这样的好处是,当页面元素发生变化,只需要修改存放改页面元素的类即可,大大减少了脚本的维护成本。
po是web自动化测试目前最佳的一种实践方式,简单说就是类和类之间的封装和调用,
包括基础类、页面类、用例层等部分。
基础层:点击、输入等操作加入一些等待、日志输入、截图等操作,方便以后查看脚本的运行情况及问题排查
对象逻辑层:用于存放页面元素定位和存放一些封装好对功能用例模块
业务层:用于存放真正的测试用例的操作部分
ecshop_testPageObject(可以将此目录设为Sources Root,导包更方便)
baseView 基础层:封装所有页面的公共方法
baseView.py
pageViews 对象逻辑层:注意,是以html表单划分页面
loginPage.py 封装登录的操作
menuPage.py 封装菜单页面的操作
addDuobaoPage.py 封装夺宝活动的操作
testCases 测试用例
test_01_Duobao.py 夺宝奇兵活动
common 公共模块
myDB.py 数据库操作
commonFunc.py 读取数据
config 数据配置
urlData.yaml 访问地址
testData.csv 测试数据(登录信息、测试数据和预期结果)
log.conf 配置日志信息
logs 日志相关
run.log 记录脚本运行日志
screenshot 报错截图
reports 测试报告
runAllCases.py 运行所有用例的主程序
HTMLTestRunner.py 生成测试报告的文件(一般放在python/lib下面)
注:
1.注意runAllCases里面testCases的路径,报告名称等
2.HTMLTestRunner.py可放在与runAllCases在同一位置
6.工程优化
E 脚本出错,
F 断言失败,
. 运行成功
注意:unittest单元测试框架中,有时候需要人为添加失败断言(如登录失败、元素定位失败)
if xxx == False:
self.assertEqual(1,2,msg="登录失败")
如果报错,注意路径使用绝对路径,可慢慢导入自定义模块调试
7.定时任务
jenkins:
1.DOS窗口进入工程目录执行:python runAllCases.py
2.jenkins日程表:0 20 * * *
3.jenkins批处理命令:
D:
cd workspace\ecshop_testPageObject
python runAllCases.py