前言
之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习。(注:项目是针对我们公司内部系统的测试,只能内部网络访问,外部网络无法访问)
问:
1.外部网络无法访问,代码也无法运行,那还看这个项目有啥用
2.如何学习本项目
3.如何学习自动化测试(python+selenium)
答:
1.其实代码并不重要,希望大家完完整整的看完这个项目后,自己会有思路有想法,学会这个项目的框架结构和设计思想,把这些能应用到自己的项目中,那么目的就达到了(项目中涉及到的一些公共方法是可以单独运行的,大家可以拿来执行用到自己的项目中)
2.首先希望大家带着目标来学习这个项目1. 项目的目录结构(每个目录中存放什么东西)2.项目如何使用框架(本项目使用的是unittest框架)3.设计模式是如何应用在本项目中的(本项目应用page object设计模式)
3.个人而言
1)如果你没有任何的编程基础,建议先学习一门编程语言,包括环境的搭建,自己动手写代码,遇到问题多想多琢磨,这样一定会加深自己的印象。如果你有一定的编程基础那么直接看看python的基础语法和selenium就ok(我的自动化测试经验也有限,可能给不了大家太多的建议 ,当然会的越多越好 呵!)
2)自己动手搭个框架,手写一个实战的项目,这时候你会发现你还有好多东西不会,那么线路就来了,哪里不会就去学哪里,边学边写,直到你的项目完成,再次回味就会发现你会了好多,当然不会的东西更多了因为你的思路慢慢的扩宽了,你会想到无人值守,集成等等的想法
3)可以参加培训机构的培训,说实话现在的培训机构越来越多,个人认为有些机构的老师确实是没什么水准的,因为他们教的是基础没有太多的拔高内容,但是有一点是好了,你可以很系统的学习一系列的自动化知识
ok 说了很多废话,大家不要介意!直接上项目
项目简介
项目名称:**公司电子零售会员系统
项目目的:实现电子零售会员系统项目自动化测试执行
项目版本:v1.0
项目目录
Retail_TestPro Docs# 存放项目的相关文档 01测试计划 02测试大纲 03测试用例 04测试报告 05测试进度 06技术文档 07测试申请 Package# 存放第三方插件 HTMLTestRunner.py Retail Config __init__.py Conf.py# 读配置文件获取项目跟目录路径 并获取所有欲使用的目录文件的路径 Config.ini# 存放项目跟目录的路径 Data TestData __init__.py elementDate.xlsx# 存放项目中所有的元素信息及测试数据 Email_receiver.txt# 存放邮件的接受者信息 Report# 测试报告 Image Fail# 存放用例执行失败时的截图 Pass# 存放用例执行成功时的截图 Log# 存放用例执行过程中的log信息 TestReport# 存放测试用例执行完成后生成的测试报告 Test_case# 测试用例信息 Models # 存放一些公共方法 Doconfini.py# 读配置文件 Doexcel.py# 读excel文件 Driver.py# 存放driver Log.py# 生成log Myunit.py# 继承unittest.Testcase Sendmail.py# 发送邮件 Strhandle.py# 字符串处理 Tcinfo.py# 测试用例基本信息 Testreport.py# 测试报告 Page_obj# 测试模块 Activerule_page.py Base_page.py Company_page.py Createrule_page.py Memberquery_page.py Modifypw_page.py Pointquery_page.py ActiveRuleTc.py CompanyQueryTc.py CreateRuleTc.py LoginTc.py MemberQueryTc.py ModifyPwTc.py PointQueryTc.py runTc.py# 执行测试用例
项目环境
本版
python 36
pip insatll selenium
PyCharm 2017.2.4
Windows 10 10.0
HTMLTestRunner.py
项目框架
unittest单元测试框架
pageobject 设计模式
UI对象库思想
项目设计
1.一个模块(被测项目的页面)对应一个py文件及一个测试类(测试文件)
2.每一个测试页面(系统的页面)中存储页面元素及此页面中涉及到的功能
3.每一个用例组合在一个测试类里面生成一个py文件
项目目标
我们在写自动化测试项目的时候一定要想好你的脚本都要哪些功能,页面元素平凡改动的时候是否需要大批量的修改脚本,及测试不同数据时是否也要修改脚本,那么能想到这些我们的初始目标差不多就有了
1. 生成测试用例执行结果报告
2.生成测试用例执行日志
3.用例执行失败或者执行完成后自动发送邮件报告
4. 用例执行失败或者成功时截取图片
5.数据驱动(读取测试数据,减少脚本维护成本)
项目代码
config.ini # 存放项目跟路径
1 2 |
|
conf.py
elementData.xlsx # 存放所有的测试数据及元素
一个excel文件,不方便贴里面内容(先过,别管里面是啥了 哈哈 后面再找吧)
mail_receiver.txt# 存放邮件接收者的账号 , 可以添加多个账号以‘,’号分割
**@qq.com
公共方法models下面的文件:
doconfini.py
1 ''' 2 Code description:read conf file 3 Create time: 4 Developer: 5 ''' 6 7 import logging 8 import configparser 9 from retail.config.conf import * 10 from retail.test_case.models.log import Logger 11 12 log = Logger(__name__, CmdLevel=logging.INFO, FileLevel=logging.INFO) 13 class DoConfIni(object): 14 15 def __init__(self): 16 """ 17 18 :param filename: 19 """ 20 self.cf = configparser.ConfigParser() 21 22 # 从ini文件中读数据 23 def getConfValue(self,filename,section,name): 24 """ 25 26 :param config: 27