飞不高 发表于 2024-8-28 16:47:45

关于jenkins集成python的单元测试

最近在研究jenkins的集成,然后想把自己写的python工具也用jenkins集成一下
废话少说,来看结构
            https://i-blog.csdnimg.cn/blog_migrate/fbef4ee89ad62d14f5d92f55d5595923.png         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
            https://i-blog.csdnimg.cn/blog_migrate/6ba6b87e2122970175b845e43c5882f1.png         3、设置触发器
            https://i-blog.csdnimg.cn/blog_migrate/404aa20fff3159de44a6d216f694ecdd.png         4、构建 (前提必要安装pytest-cov)

            https://i-blog.csdnimg.cn/blog_migrate/10e7c93cfe26bb3916f6fd66f8820068.png         5、构建后展示report
            https://i-blog.csdnimg.cn/blog_migrate/c88fe82fceac582f0c8a650c51ffb86c.png         
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
$ 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
Publishing Cobertura coverage report...
Publishing Cobertura coverage results...
Cobertura coverage report found.
Recording test results
Finished: SUCCESS报告截图:
            https://i-blog.csdnimg.cn/blog_migrate/1c390f14b17497a2444b052d0f0317ca.png                     https://i-blog.csdnimg.cn/blog_migrate/8735ea627864da26ce2a78a04ec88961.png         
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生成的报告更好看一些
            https://i-blog.csdnimg.cn/blog_migrate/7dd6b910558c9f0a32095584748f59fc.png         
后面基本一致,注意生成报告的路径要配置正确,看下结果:
            https://i-blog.csdnimg.cn/blog_migrate/dbd2ddcdecffe891e54a9ec0f079c949.png                     https://i-blog.csdnimg.cn/blog_migrate/0200b39a82a38a71a3cebd0e3d459064.png         

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 关于jenkins集成python的单元测试