美文网首页
Flask Travis & Coverall 配置

Flask Travis & Coverall 配置

作者: yehongjiang | 来源:发表于2018-07-09 00:19 被阅读0次

    Flask Travis & Coverall 配置

    Travis

    Travis CI是一个提供持续集成功能的平台,在 Github 上,可以添加Travis CI,当有code push时候,会推送通知到 Travis,根据设置的脚本运行指定任务,进行环境的配置。配置步骤可见官方配图:

    build step

    注册配置

    首先需要注册账号,然后选择对应的库开启集成功能。如果库在 organization 上,还需要首先请求获得这个 organization 的权限。所有 organization 中有权限的 travis 账户都会看到这个 organization 中库的集成信息。

    image-20180709103337538

    添加 .travis.yml

    然后就是把 .travis.yml 文件加入到库中。这里主要说说怎么写这个文件。

    根据使用语言不同,配置也会有较大差异。这里以 Python 下 Flask 框架编写的后端服务器为例。

    首先我们以逐步迭代的方式说明。首先我们看官方文档给出的 Python 配置:

    language: python
    python:
      - "2.6"
      - "2.7"
      - "3.3"
      - "3.4"
      - "3.5"
      - "3.5-dev"  # 3.5 development branch
      - "3.6"
      - "3.6-dev"  # 3.6 development branch
      - "3.7-dev"  # 3.7 development branch
    # command to install dependencies
    install:
      - pip install -r requirements.txt
    # command to run tests
    script:
      - pytest # or py.test for Python versions 3.5 and below
    

    基本可以看清这个文件的语义:

    • 首先指定对应的语言 language,并且确定要使用的 python 版本。如果有多个版本的话,会分别在这几个版本都进行集成测试。
    • 然后 install 后面写安装依赖项阶段需要执行的脚本命令。其实 travis 也会默认执行 pip install -r requirements.txt 这个安装命令,不过还是显式写出来比较好。
    • script 后面就是进行测试阶段执行的命令。一般使用 pytest,当然使用自己写的其他单元测试也是可以的。

    在这个配置的基础上,可以根据我们需求修改,获得我们的一个基础版本:

    language: python
    
    python:
      - "3.6"
    
    os:
      - linux
     
    install:
      - pip3 install -r requirements.txt
      
    script:
      - python manage.py test
    

    但是我们的服务器还需要链接数据库。Travis 的虚拟机自带很多数据库,我们的服务器使用 MySQL。于是我们在使用 MySQL 之前,需要创建一个数据库給我们的服务器使用。因为文件里写的都是命令行执行的脚本,所以我们需要用命令行创建一个数据库。命令行创建数据库的命令是 mysql -e 'CREATE DATABASE test。因此我们在安装依赖之前执行创建数据库的操作。同时创建数据库需要 sudo 权限,所以我们在一开始启用 sudo 权限。这里创建了测试和开发环境的数据库。

    sudo: enabled
    
    language: python
    
    python:
      - "3.6"
    
    os:
      - linux
    
    services:
      - mysql
    
    # install dependencies
    before_install:
      - mysql -e 'CREATE DATABASE test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;'
      - mysql -e 'CREATE DATABASE dev DEFAULT CHARSET utf8 COLLATE utf8_general_ci;'
    
    install:
      - pip3 install -r requirements.txt
        
    script:
      - python manage.py test
    

    这样基本的构建就完成了。构建没有报错的话,就会在官网看到一个 passing 徽章:

    image-20180709111525306

    Coverall

    然后我们需要进行代码覆盖率测试。Coveralls 借助 Travis CI 的持续集成服务,向用户报告自动测试的测试覆盖率。同样注册,登录自己的账号。记得要得到自己 Organization access 的权限。

    然后和 travis 一样,打开仓库后进行配置。使用 coveralls-python 进行测试的话,可以直接在命令行运行:

    pip install coveralls
    coverage run --source=mypkg setup.py test
    coveralls
    

    就可以跑单元测试,同时测试代码覆盖率。因为全在命令行运行,所以正好可以直接写在 Travis CI 里。所以我们把 coveralls 写进 requirements.txt 后,只需要加上后面两条命令即可。

    加上 coveralls 后的配置文件 .travis.yml

    sudo: enabled
    
    language: python
    
    python:
      - "3.6"
    
    os:
      - linux
    
    services:
      - mysql
    
    # install dependencies
    before_install:
      - mysql -e 'CREATE DATABASE test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;'
      - mysql -e 'CREATE DATABASE dev DEFAULT CHARSET utf8 COLLATE utf8_general_ci;'
    
    install:
      - pip3 install -r requirements.txt
    
    before_script:
      - python manage.py gen_basic_data
      - python manage.py gen_fake_data
    
    script:
      - coverage run --source=app manage.py test
    
    after_success:
      - coveralls
    

    before_script 执行的是在进行单元测试之前,生成一些伪数据。在单元测试成功之后,执行 after_success 里的命令,上传覆盖率信息。

    然后就能在官网看见覆盖率的结果,把这个徽章的 URL 放到 README 中,就能在 github 上显示出来:

    image-20180709111302238

    最后默认每次集成之后都会发一封邮件通知结果。关闭这个功能的话只需加上一条:

    notifications:
      email: false
    

    相关文章

      网友评论

          本文标题:Flask Travis & Coverall 配置

          本文链接:https://www.haomeiwen.com/subject/urwauftx.html