如何在github利用Travis CI 对项目做持续集成测试

前言

一个项目如何保证代码质量是开发中非常重要的环节,对于开源项目来说更是如此,因为开源项目要面对的是来自不同水平开发者提交的代码。所以围绕开源做持续集成(Continuous Integration)变得越来越重要,而目前使用最广泛的免费CI工具当数Travis CI


我们可以在github中常见到这些图标,就是集成测试的效果

点链接,还可以看成集成测试的过程



Travis CI能做的最主要工作是自动运行项目的单元测试并生成报告。进入项目的Travis CI页面,可以看到最新版本的测试情况,默认设置下,每次对项目进行Push时,都会触发Travis CI运行一次测试,测试环境包括各种版本的不同情况。Travis CI同时提供了一个项目状态图标,可以放置在项目主页告知用户当前的测试情况.


测试工具

unittest单元测试

nose将测试用例聚合和进行回归测试

coverage确定代码覆盖率

PyLint扫描代码

关于测试

例如django中每个子类必须要有测试

from django.test import TestCase

class SimpleTest(TestCase):
    def test_basic_addition(self):
        """
        Tests that 1 + 1 always equals 2.
        """
        self.assertEqual(1+1,2)

python manage.py test <app_name>

每个view必须要有测试

class BlogViewsTest(TestCase):
    def test_index(self):
        response =self.client.get(reverse('index'))
        self.assertEqual(response.status_code,200)

fixtures使用

Fixtures 是一种新的提供初始化数据的方法,并且被Django的测试框架用来处理单元测试的测试数据。
不同于SQL文件的是,使用fixture你可以提供一个被 Django的serialization系统所能识别的序列化文件,
它会被读取并自动转换成对应的model,然后保存进你的数据库

你需要创建一个fixture文件(使用manage.py的dumpdata命令更简单),确保文件名为"initial_data",后缀名可以是json, xml, yaml, python其一。
把这个文件放到你的app目录下的fixtures目录里,它就会在执行syncdb的时候创建完你的数据表后自动读取并插入数据。
如果你有更多fixtures文件或者你没有在执行syncdb的时候提供fixture的话,你也可以使用manage.py的loaddata命令手工加载fixture

Fixtures 适用于少量的初始化数据,因为它使用Django的序列化功能,所以不依赖于特定的数据库。
它执行起来没有SQL快,因为要创建对象。另外,这个功能可以 在你切换数据库平台的时候使用,
比如我要把系统从Mysql切换到PostgreSQL,就可以使用fixtures来导入转出数据


python manage.py dumpdata app_name>app_name/fixtures/file.json


class BlogViewsTest(TestCase):  

    fixtures =['test_data.json']

    def test_index(self):  
        response =self.client.get(reverse('index'))  
        self.assertEqual(response.status_code,200)

使用

注册账号见https://travis-ci.org/

过程很简单,用github账号授权就行


1.使用github账号登录
2.指定repo
3.编写.travis.yml
4.push code

一个简单的.travis.yml的配置文档

language: python

python:
    - "2.6"
    - "2.7"
env:
    - DJANGO=1.4
    - DJANGO=1.5
    - DJANGO=1.6.0
install:
    - pip install -r requirements.txt --use-mirrors
script:
    - python manage.py test
notifications:
    recipients:
        - wengcc@ihep.ac.cn
    on_success: change
    on_failure: always
    irc:
        channels:
            - "irc.freenode.org#cloudsafe"
        on_success: change
        on_failure: always

在github中添加travis.io集成

.. image:: https://api.travis-ci.org/wcc526/cloudsafe.png?branch=master
    :target: http://travis-ci.org/wcc526/cloudsafe
.. image:: https://drone.io/github.com/wcc526/cloudsafe/status.png 
    :target: https://drone.io/github.com/wcc526/cloudsafe/latest
最终效果如图 

不明白的,可以参看我这个项目 https://github.com/wcc526/cloudsafe



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值