一、 环境搭建
1. Python下载及安装
Python可应用于多平台包括windows, Linux 和 Mac OS X, 本文主要介绍windows环境下。你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。
如未安装python, 推荐下载python 3.8.3以上版本,本文主要介绍windows下安装,打开 WEB 浏览器访问https://www.python.org/downloads/windows/ ,在下载列表选择对应的Windows系统平台安装包,如文件名python-3.9.5-amd64.exe(对应64位操作系统),直接运行安装。
下载后运行.exe可执行文件,使用默认设置,“下一步”直到完成, 添加安装路径如:C:\Python38和C:\Python38\Scripts两个路径到环境变量Path中,保存后在cmd命令行下执行python验证。
环境变量编辑结果:
2. JDK安装(后面的Tomcat, allure等需要依赖JDK)
去官网(https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html)下载JDK安装包,运行下载的JDK安装文件,如jdk-8u181-windows-x64.exe,只需要更改一下安装位置(或不改)并记住这个安装位置。
2.1在上一步的环境变量中新建JAVA_HOME变量,变量值即JDK安装目录(我的是: c:\Program Files\Java\jdk1.8.0_181)。
2.2再新建CLASS_PATH变量,变量值为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar; 前面有个英文的点和分号不要漏掉。
2.3 Path变量中新增值 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 注意如果是windows7系统等path变量中多个地址都放在一行的情况下,要在之间增加英文分号与前面的变量值间隔开.
设置完成后结果如下图所示:
保存配置后可以在cmd下执行java -version验证:
3. 编辑器安装
可以自行搜索PyCharm或Visual Studio Code的安装及配置,本文不详细说明
PyCharm下载地址: https://www.jetbrains.com/zh-cn/pycharm/
Visual Studio Code下载地址: https://code.visualstudio.com/
4. 相关python包及插件的安装
本框架需要用到的python包包括:pytest, selenium, allure-pytest
4.1 安装pytest
在cmd下或PyCharm或Visual Studio Code的Terminal命令行下用pip命令工具安装:
>pip install -U pytest (-U参数表示如已安装则升级到最新版)
Pytest命令未指定目录或文件时,会在当前目录及所有子目录下查找测试模块,包含:文件名为test_*.py或者*_test.py的文件,在测试模块中查找以test_开头的函数,查找名字以Test开头的类。其中首先筛选掉包含__init__()函数的类,再查找类中以test_开头的类方法,即规则如下:
==测试文件以test_开头(以_test结尾也可以)
==测试类以Test开头,并且不能带有init方法
==测试函数以test_开头
==断言使用基本的assert即可
如图所示
Pytest框架提供可按优先级执行测试用例
4.2 安装selenium
命令行输入
>pip install selenium
了解selenium请访问:https://blog.csdn.net/qq_44326412/article/details/107825851?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162129756416780357211210%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162129756416780357211210&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-107825851.first_rank_v2_pc_rank_v29&utm_term=selenium&spm=1018.2226.3001.4187
4.3 安装allure
4.3.1 Allure 下载最新版本:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 选择一个版本进入后,下载zip包
下载完后解压到某个目录中, 在环境变量path中加入allure所在目录,如我的环境变量path中增加D:\allure\allure-2.13.9\bin
4.3.2 与pytest的集成
安装pytest-allure插件库, >pip install allure-pytest
4.3.3 Jenkins中安装allure插件 ,以下安装Jenkins时再介绍
4.3.4 allure生成报告
说明:pytest执行测试用例产生的数据是以json格式的数据类型保存,通过allure generate去解析才能正式生成html类型的测试报告
配合pytest使用: >pytest --alluredir=D:/pytest/result (执行pytest时指定allure报告产生结果的目录,也可以使用相对路径指定,如:pytest --alluredir=../result , 表示指定当前目录的上一级目录下的result目录)
要在测试完成后查看实际报告,需要使用Allure命令行实用程序从结果生成报告:
>allure generate ../result -o ../report --clean (从上一条命令生成的allure结果../result中整理成测试报告到../report下,--clean参数表示之前已有结果则清除)
通过allure注解方式可对报告进行层级划分,这种方式可对用例进行统一的管理并分级展示
示例代码:
执行结果如下:
5. Tomcat及Jenkins安装
注Jenkins也可以直接运行在windows下, 但推荐使用Tomcat容器来运行Jenkins
5.1从官网下载Tomcat,根据需要下载windows版的64位zip文件;下载地址为:https://tomcat.apache.org/whichversion.html
5.2将下载后的Tomcat解压到某个盘中,我的解压到D:\Tomcat;
5.3配置Tomcat环境变量,新建一个TOMCAT_HOME,值为D:\Tomcat\apache-tomcat ;新建一个CATALINA_HOME,值为D:\Tomcat\apache-tomcat-9.0.36;将;%TOMCAT_HOME%\bin;%CATALINA_HOME%\lib放到path中。
5.4进入到D:\Tomcat\apache-tomcat-9.0.36\bin点击startup.bat文件
5.5然后在浏览器中输入localhost:8080出现一只猫页面即成功(默认是8080端口),如果端口冲突要修改,就到D:\Tomcat\apache-tomcat-9.0.36\conf目录下修改server.xml文件中
效果图如下
5.6安装Jenkins
5.6.1下载Jenkins应用包jenkins.war (下载地址https://www.jenkins.io/zh/download/)
5.6.2 新建一个环境变量,JENKINS_HOME,即将要安装的jenkins的目录,我创建的为D:\Jenkins,
或者是编辑D:\Tomcat\apache-tomcat-9.0.36\conf下的context.xml文件添加
不然会默认安装在c盘用户下的.jenkins 文件夹下,还有就是如果之前的文件如果安装出错了的话要将所有的文件都删除掉不然还会影响后续的安装
5.6.3把jenkins.war 包放在tomcat的webapps下
5.6.4进入到D:\Tomcat\apache-tomcat-bin运行startup.bat文件,此时会安装jenkins,安装好之后,wabapp里会出现jenkins文件。重点jenkins和tomcat端口不要一样。tomcat设置端口8088,jenkins端口8080,打开http://localcat:8086/jenkins
效果如下图,访问jenkins的时候有个初始化密码,需要输入,查找初始化密码,按提示进入对应的目录D:\Program Files\Jenkins\secrets,打开initialAdminPassword复制其中密码到输入栏(Linux系统下初始化密码在/root/.jenkins/secrets/initialAdminPassword)
5.6.5 安装Jenkins的allure插件
以admin帐号登录Jenkins,首页左边Manage Jenkins菜单下,进入Manage Plugins子菜单,在插件管理页面中选择”可选插件”,搜索allure, 会搜索到Allure Jenkins Plugin,勾选后点击页面下方的Install without restart或Download now and install after restart即可安装.
5.6.6 jenkins全局配置
由于jeknkins运行需要jdk环境,所以全局配置要引入环境变量
宿主执行机执行需要依赖本地allure启动组件,全局配置需引入allure环境变量
注:关于Jenkins中项目的配置请查阅文档
安装后在项目配置中”构建”步骤执行pytest命令时生成测试结果并指定存放目录
然后可在项目的配置菜单中看到构建后操作下有Allure Report项如下图,其中的Results: Path中填写测试结果生成的目录result(即上步构建指定的结果目录), 在Report path:中指定测试报告存放的目录:
二、 pytest+selenium框架
1. 框架的目录结构
说明:common目录存放公共的方法,如driver,读取文件的方法等,目录中需要__init__.py文件;
config目录存放日志等的配置文件,目录中需要__init__.py文件;
driver目录存放浏览器驱动程序,目前使用谷歌驱动器chromedriver.exe;
log目录即存放日志文件;
PageObject目录存放页面类、方法、元素等,目录中需要__init__.py文件;
report目录存放allure产生的测试报告;
result目录存放allure生成的测试结果文件;
testcase目录用于存放测试用例和conftest.py(pytest胶水文件,如果需要),目录中需要__init__.py文件,如在windows命令行运行用例,可cd到此目录下后执行pytest命令;
其它文件__init__.py为空文件,python包的必要文件,没有此文件则不能在py文件中导入;
README.md为项目的相关文字说明;
requirements.txt文件中列明了依赖包的信息,为了方便项目安装依赖,可以直接在命令行下执行:pip install -r requirements.txt ,即可安装好所需要的包及其需要的版本。
2. 框架的组成
简单理解POM模型:
由于下面要讲元素相关的,所以首先理解一下POM模型
Page Object模式具有以下几个优点。
a.抽象出对象可以最大程度地降低开发人员修改页面代码对测试的影响, 所以, 你仅需要对页面对象进行调整, 而对测试没有影响;
b.可以在多个测试用例中复用一部分测试代码;
c.测试代码变得更易读、 灵活、 可维护
Page Object模式图
• basepage ——selenium的基类,对selenium的方法进行封装
• pageelements——页面元素,把页面元素单独提取出来,放入一个文件中
• searchpage ——页面对象类,把selenium方法和页面元素进行整合
• testcase ——使用pytest对整合的searchpage进行测试用例编写
通过上图我们可以看出,通过POM模型思想,我们把:
• selenium方法
• 页面元素
• 页面对象
• 测试用例
以上四种代码主体进行了拆分,虽然在用例很少的情况下做会增加代码,但是当用例多的时候意义很大,代码量会在用例增加的时候显著减少。我们维护代码变得更加直观明显,代码可读性也变得比工厂模式强很多,代码复用率也极大的得到了提高。