Windows构建验证环境:Jenkins+Pytest+Allure+GitHub

这个周末,尝试在windows上搭建了整个构建和验证的环境,中间踩了不少坑,搭起来以后感觉还不错,中间的过程也算是熟悉了一些。这样的一个环境主要用于python代码开发和验证,平时验证一些想法,搞点小case玩。当然,由于把代码git到GitHub上进行管理,也非常容易实现协同开发。

一,本地安装Python开发环境

本地开发需要用到的东西,主要是要安装PycharmAnaconda,Pycharm用来写代码,Anaconda用来管理虚拟环境,同时pytest框架需要的外部库,用于日常集成验证,其他的就是用到啥conda install XXX或者pip install XXX就行了。这两样东西,感觉没有太多的坑,简单上网查查都能很快搞定了。

值得一提的坑是:
(1)当你创建了conda虚拟环境以后,在pycharm的File->Setting里面,要把Project Interpreter设置为正确的虚拟环境,否则,pycharm运行默认还是base环境,你可能就会经常感受到:我明明在虚拟环境装了某个外部包,怎么运行还提示这个import的module不存在呢!
解释器选择正确的虚拟环境
(2)Python的基础版本并不是最新版本最好,推荐python 3.6版本(因为我安装3.7版本,后来pip外部库的时候不断被某些包更新依赖,结果其他包适配不了,后来搞的很多外部库不能用了),为什么呢?我们使用python主要是由于大量的外部库可以使用,其他外部库通常是滞后开发适配版本的,一旦python的基础版本过高,外部库的版本适配有个时间和过程,有些就无法支持,以至于用不了。但是用了略低版本的python,也会有另外一个问题,有些跟随依赖比较快的重要外部库(比如,numpy)可以安装,但是版本却会过高,不匹配python的基础版本,反而要注意安装匹配的略低版本。外部库之间的依赖关系,有一些也比较错综复杂,就不再赘述,遇到问题解决问题就可以了。

(清华源的pip镜像速度还是非常给力,减少了很多浪费人生的时间,推荐一下,地址:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/)。

二,GitHub和代码远程管理

在一个需要经常协同沟通或共同开发的技术时代,最好是能够将代码进行远程管理,GitHub开源社区就是很好的选择了,不少顶级会议的作者,也会把paper对应的代码放在GitHub上进行开源。

这个过程倒是没有什么坑,拿自己的邮箱去注册账号就好了,注册好了用于后面创建项目的代码仓库Repository,进行远程代码存放和管理。对应的,本地需要安装Git,我是从官网上下的最新版本,下载挺慢的。有了这个,通过远程代码仓库的管理,事实上就可以协同开发了,一个项目的不同开发者,分别在本地进行不定时的代码合入就好了。Git主要就是做这个事情,clone下载,branch拉分支,checkout切换分支,add和commit本地合分支,push推到远程代码分支,merge进行分支合入主分支,等等操作,不出问题都好办,出问题了就得涉及回退和分支删除等工作。

我建了个测试性质的仓库,用于验证流程,就是这样子的:https://github.com/liwenkaitop/test
代码仓库

三,测试框架和测试报告:Pytest+Allure

pytest测试框架,主要是pip个pytest外部包,然后熟悉这个框架的入口调用规则就行了,比Python自带的unitcase类继承的方式要更灵活强大一些,作为测试验证的模块文件名,类名,函数名,用Test开头或结尾就行了,执行的时候以pytest关键词执行,就会自动遍历所有相关的test case,并汇总测试结果。
pytest测试结果
Allure用来生成测试报告,一方面在python里面也要pip相关的外部包allure-pytest,这个主要用来在执行后生成Json格式的测试结果(如上图,report目录下的是Json格式的测试结果),如果要可视化的得到网页版本的测试报告,还是要单独下载Allure,不过这个安装简单,官网直接下载出来就是个压缩包,解压到指定的一个安装目录,并且在系统环境变量里面,添加一下路径就行了,没什么坑,主要要注意的就是,Allure依赖于(JDK1.8以上版本),所以必须先安装JDK并配置环境变量。

这个弄好以后,其实就可以在本地进行测试验证并生成测试报告了(allure generate --clean report,注意,这个生成过程,没有指定目标路径,因此默认都会放在allure-report目录下)。生成后的allure-report目录下,就会有全套的测试结果,包含一个index.html,就是可视化的测试报告(注意,这个是在本地打开的一个测试报告)
Allure测试报告

四,项目构建和集成验证:Jenkins

想要程序员写出没问题的代码,简直比登天还难,尤其是在协同开发,实时沟通不方便的情况下,代码之间的依赖会导致更多的问题出现,因此,项目版本构建和个人本地单独开发代码,是两种不同性质的工作。构建的真正含义,其实就是测试,每个项目成员自己测自己的代码没问题后,push到远程代码分支,这个分支的构建要进行及时的验证,以避免引入了交叉依赖的问题而没有及时解决,导致某一时刻就会发生大家自己本地的代码看似都跑的挺好,但是推到远程的代码分支却可能编译都是问题,这就可能是协同过程中由于依赖而产生的问题。(这段就当是写给没毕业的大学生吧)

Jenkins的下载安装比较简单,其实就是要做一个构建服务器(当然,我是在本地运行,如果是要协作,把Jenkins服务设置为能够访问的IP地址和端口就可以了)。但是项目设置里面在windows下还是比较多坑,因为这里要把GitHub上的远程代码分支进行构建和继承验证,还要把测试结果通过Allure进行直观展示,涉及多节点,跨系统的验证,还要注意建任务的时候,不同的设置。

第一个需要注意的就是:要注意在管理界面下载插件,(Manage Jenkins->Manage Plugins),你用allure就要下allure的插件,用GitHub的就要下载GitHub的插件(当然还有SSH,这样才可以自动访问远程代码仓库)。

第二个是在配置构建命令的时候,由于windows下是把你的构建命令做成bat批处理文件进行执行的,因此,需要对批处理的一些情况熟悉一下,尤其是conda虚拟环境的命令,一定要用call调用,比如,call activate py36。我中间遇到一个allure-results does not exists的问题,表面上看是目录有问题,最后仔细看,其实是,批处理命令根本没有得到完整执行,所以才没生成测试结果的目录(但诡异的是,测试case确实有pass的结果,所以被网上解决这个问题的帖子误导了方向)。
Jenkins任务
然后,就可以直观地在线看到一个项目分支构建的情况了。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44252417/article/details/106974294