【开源项目利器】利用Travis持续集成与Codecov测试覆盖率构建自动化测试环境,提升Github项目逼格。
始于颜值,陷于才华
测试对于一个项目的重要性是不言而喻的,而小的开源项目往往难以配备专门的测试团队,频繁的push代码会使得本就缺乏人手的测试难上加难,因而构建自动化测试环境对于小型开源项目十分有必要!
坦白说,我是一个先看脸的人,在不了解Travis和Codecov是做什么的时候,我学习他们的初衷只是觉得这样的图标放在Github上比较漂(zhuang)亮(bi),然而当我弄懂了他们到底是干什么的时候,我觉得他们好胖胖哦!
Travis CI
什么是Travis CI?
Travis CI是一个托管的,分布式持续集成工具,主要用来构建和自动测试项目。当你push一段代码至github的时候,Travis会按照你预先配置的测试文件进行自动测试,并返回pass或fail的结果。
当然,我们也可以用travis来进行deploy,比如博客什么的。自动测试本质就是用机器运行一系列程序,所以可以在这些程序里加上deploy的命令达到这样的目的。比如:1
hexo d -g
将其加入执行的测试script,测试主体部分pass之后会自动将博客推送上线。
如何用Travis CI?
- 有一个github账户和托管的仓库。
- 去travis官网,用github账户登陆并授权,开启自己想要用travis的仓库。
- 在仓库中添加一个.travis.yml的配置文件,配置规则见这里,以我的MC胖虎为例,配置文件如下:
1 | language: python |
before_install阶段主要安装一些系统依赖,和install区别不是很大,我个人倾向于把非requirement文件里的安装都放在before_install阶段。
- push代码之后,travis的运行结果可以在travis网站看到。
点击build passing的图标将下面这种格式的语句写入readme或其它markdown文件即可看到小图标。
1
[![Build Status](https://travis-ci.org/hjptriplebee/Chinese_poem_generator.svg?branch=master)](https://travis-ci.org/hjptriplebee/Chinese_poem_generator)
点击trigger build可以在线调试
Codecov
什么是Codecov?
Codecov是一个测试结果分析工具,travis负责执行测试,Codecov负责分析测试结果,最简单的用法就是衡量测试代码覆盖度,当然更高端的用法还有待继续学习。依赖于travis,Codecov非常简单就能上手。
如何用Codecov?
- 去Codecov官网用github账号登陆并授权,选择要分析的仓库。
- 修改.travis.yml文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20language: python
python: "3.6"
notifications: # 邮箱通知
email: false
sudo: false #有定制化开发环境需要,默认false,不开启容器,编译效率高
before_install:
- pip install tensorflow #加sudo默认系统环境里的python,使用虚拟环境需加-E参数
- pip install codecov
- pip install coverage
install: true
script:
- coverage run main.py
after_success:
- codecov #运行codecov
主要区别在于install了codecov和coverage,coverage不是必须的,也可以用nosetests等取代,运行脚本的时候指定使用coverage生成报告,结束后指定codecov上传测试分析报告。codecov也可以有自己独立的配置文件,可以指定忽略哪些模块等,详见手册。
- travis测试pass之后,一份测试报告将上传至这里并可视化显示出来,点进去可查看详细报告。
MC胖虎有训练,普通写诗,藏头诗三个部分,而默认main只执行了普通写诗部分,所以其余两个部分有一些代码未测试,测试覆盖率报告为63%。通过编写更完整的测试脚本,可以同时测试三个部分,将覆盖率提升。
- 点settings->badge,将下面这种格式的语句写入readme或其它markdown文件即可看到小图标。
1 | [![codecov](https://codecov.io/gh/hjptriplebee/Chinese_poem_generator/branch/master/graph/badge.svg)](https://codecov.io/gh/hjptriplebee/Chinese_poem_generator) |
最终效果如下:
结束
以上就是travis和codecov的一些基本用法,算是快速入门吧。还有一些复杂的用法需要今后不断学习。
Bonus
其它github小图标,类似这种:可以从这里获取。