jenkins集成python的单元测试
Posted 晶莹的营
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins集成python的单元测试相关的知识,希望对你有一定的参考价值。
最近在研究jenkins的集成,然后想把自己写的python工具也用jenkins集成一下
废话少说,来看结构
sparking.py
\'\'\' @author: lianying \'\'\' class Sparking: @staticmethod def get_num_of_zero(bits_num, key): cnt = 0 while key: cnt += 1 key &= key -1 return bits_num - cnt @staticmethod def get_num_of_one(bits_num, key): cnt = 0 while key: cnt += 1 key &= key -1 return cnt def main(): s = Sparking() s.get_num_of_zero(32, 5) if __name__ == \'__main__\': main()
test_sparking.py
\'\'\' @author: allen \'\'\' import pytest from sparking.sparking import Sparking class TestSparking(object): @pytest.mark.parametrize("bits_num, key, expected",[ (8,5,2), (16,5,2), (32,5,2), (64,5,2) ]) def test_get_num_of_one(self, bits_num, key, expected): assert Sparking.get_num_of_one(bits_num, key) == expected @pytest.mark.parametrize("bits_num, key, expected",[ (8,5,6), (16,5,14), (32,5,30), (64,5,62) ]) def test_get_num_of_zero(self, bits_num, key, expected): assert Sparking.get_num_of_zero(bits_num, key) == expected
代码上次svn,然后配置jenkins;jenkins的安装就不介绍了,网上一搜一大片;jenkins里先安装好Cobertura Plugin插件,用来显示代码覆盖率的
1、创建job
2、配置svn
3、设置触发器
4、构建 (前提需要安装pytest-cov)
5、构建后展示report
6、保存、应用即可
7、执行结果和报告
console :
Started by user anonymous Building on master in workspace C:\\Users\\lianying\\.jenkins\\jobs\\test_django\\workspace Updating svn://10.134.28.113/project/sparking at revision \'2016-06-08T13:54:59.004 +0800\' U tests\\test_sparking.py At revision 28 [workspace] $ cmd /c call D:\\Dev\\tomcat\\temp\\hudson4704689285977025139.bat C:\\Users\\lianying\\.jenkins\\jobs\\test_django\\workspace>py.test tests\\test_sparking.py --junitxml=pytest_result.xml --cov=sparking --cov-report=xml ============================= test session starts ============================= platform win32 -- Python 2.7.0, pytest-2.9.2, py-1.4.31, pluggy-0.3.1 rootdir: C:\\Users\\lianying\\.jenkins\\jobs\\test_django\\workspace, inifile: plugins: cov-2.2.1, html-1.8.1 collected 8 items tests\\test_sparking.py ........ generated xml file: C:\\Users\\lianying\\.jenkins\\jobs\\test_django\\workspace\\pytest_result.xml --------------- coverage: platform win32, python 2.7.0-final-0 ---------------- Coverage XML written to file coverage.xml ========================== 8 passed in 0.11 seconds =========================== C:\\Users\\lianying\\.jenkins\\jobs\\test_django\\workspace>exit 0 [Cobertura] Publishing Cobertura coverage report... Publishing Cobertura coverage results... Cobertura coverage report found. Recording test results Finished: SUCCESS
报告截图:
PS:补充下在virtualenv下的执行
从第4步开始
4、构建 这里需要先安装pytest-html 和pytest-cov ,然后添加SHELL
pip freeze > ./requirements.txt if [ ! -d "venv" ]; then virtualenv -p /usr/bin/python venv fi . venv/bin/activate pip install -r requirements.txt cd sparking py.test tests/test_sparking.py --html=pytest_result.html --cov=sparking --cov-report=xml
这里使用了pytest-html生成的报告更好看一些
后面基本一致,注意生成报告的路径要配置正确,看下结果:
以上是关于jenkins集成python的单元测试的主要内容,如果未能解决你的问题,请参考以下文章