Python-Django 使用 Hudson做CI服务器实践记

Python编码系列—Python CI/CD 实战:构建高效的自动化流程 在现代软件开发中,CI/CD(持续集成/持续交付)是提升开发效率、加快产品上市时间的关键实践。Python 作为一门流行的编程语言,与多种 CI/CD 工具相结合,可以极大地提高软件开发和部署的自动化水平。本文将深入探讨 Python CI/CD 的原理、实际应用,并结合具体项目案例。CI/CD 是一种软件开发实践,旨在通过自动化的流程来频繁地集成代码变更、执行测试并部署到生产环境。CI/CD 可以帮助团队更快地发现和修复缺陷,提高软件质量,并加快产品迭代速度。 阅读详情

Python-Django 使用 Hudson做CI服务器实践记


作者:Wally Yu

优快云:http://blog.youkuaiyun.com/quicktest

微博:http://www.weibo.com/quicktest

我的环境:

开发环境: Windows XP

运行环境:Ubuntu 11

Python:2.7

Django:1.3.1


国内没有找到比较好的翻译和实践性的博文,于是去了Google,按照一篇文章的做法一步步实现,实践到“Displaying unit test results”的时候因为原文使用了自己的bash,而我需要使用Django自带的unit test的框架,于是修改这一段


原文:

Displaying unit test results

What this isn’t doing it making some pretty graphs and charts. Let’s see about getting some of that enabled.

Pygments uses Nose tests for it’s unit tests. That’s pretty nice, because Nose includes a mechanism to output the format of the tests into Java-based JUnit format, and Hudson in turn knows how to make pretty pictures from that format. Since we installed the nose library earlier, we can take advantage of it. Probably the “right” way to do this would be to change the Makefile to invoke the tests that output XML for the unit tests. For right now, we’ll just shim it into place with new build steps.

  • Change the content of the Execute shell build step and replace it with
    python tests/run.py --with-xunit
  • save the configuration and invoke “Build Now”
  • now look in the workspace in you should find a new file called “nosetests.xml” in the tests subdirectory.

Let’s get that graphed…

  • Go to the job configuration and enable “Publish JUnit test result report”. It will have a text field so that you can tell it where to find the results. It uses an Ant format for finding filenames in an existing directory structure.
  • In this case use **/tests/nosetests.xml
  • Save the config
  • invoke Build Now

现在我的做法:

使用unittest-xml-reporting,官网:https://github.com/danielfm/unittest-xml-reporting#readme

具体做法:

1)shell输入安装unittest-xml-reporting:

pip install unittest-xml-reporting

2)在Django项目的Settings.py输入:

TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'
TEST_OUTPUT_VERBOSE = True
TEST_OUTPUT_DESCRIPTIONS = True
TEST_OUTPUT_DIR = 'unitTestResults'

3)回到shell,执行:
python manage.py test

4)执行完后会发现多出一个名为"unitTestResults”的文件夹,点进去看一下,发现里头有很多xml的文件生成

5)进入hudson的项目管理“configure”

http://Your IP Addr:8080/job/Your Project/configure

6)钩上“Publish Junit test result report”

7)地址填上“*/unitTestResults/*.xml”

8)保存

9)做个新Build,点 Build Now

10)Build完后会发现多出一个“Latest Test Results”的链接。点进去可以查看详细信息

11)同时会发现右边多出一个名为“Test Result Trend”的图

后面的就和原文一样了

Now you’ll see a new element in the web user interface called “Latest Test Result” which you can dig into. If you invoke “Build Now” again, it will start graphing the results of the tests and making that trend available in the project view. Right now this graph is going to be really darned boring, because there aren’t any changes between builds. Once more code starts rolling in, you’ll see changes with the number of tests being invoked. You can also click on that link and see the tests that were invoked. For python folks, remember that we’re shimming Python unit tests into a JUnit conceptual framework, so there are going to be some “leaky abstractions here”. In particular, test names, classes, and such may not alway match up with expectations. I have more details on how to enable XML output for a Django based test runner that I’ll post in another write up… uh, later.

…

hudson12

按照原文的做法,我也顺利的生成了Code Coverage和Pylint

这里要感谢原作者Joe Heck


附上原文的链接:

http://www.rhonabwy.com/wp/2009/11/04/setting-up-a-python-ci-server-with-hudson/



Gitlab: Python项目CI/CD实践 Python项目应用Giltab系统, 进行CI/CD实践,分别以fastapi和kinit项目示例。 阅读详情

相关推荐

python-ci:简单的repo可与python project和circle ci一起玩

python-ci 简单的游乐场,可测试python项目并圈出ci想法

不拼花哨,只拼实用:unittest指南,干货为王!

Python为开发者提供了内置的单元测试框架unittest,它是一种强大的工具,能够有效地编写和执行单元测试。unittest提供了完整的测试结构,支持自动化测试的执行,能够对测试用例进行组织,并且提供了丰富的断言方法。最终,unittest会生成详细的测试报告,这个框架非常简单且易于使用。unittest。

2201_76100073的博客 991

STM32U575 ADC+DMA+UART数据采集实战:CubeMX配置避坑与代码实现

在嵌入式开发中,ADC采集与DMA传输是提升系统实时性的关键技术。通过DMA将ADC数据直接搬运到内存,可大幅降低CPU占用,实现高效连续采样。结合UART的DMA发送,能进一步解放CPU,适用于工业采集、信号监测等场景。本文以STM32U575为例,详解CubeMX中ADC、DMA、UART的配置要点,包括时钟树、DMAMUX映射、循环模式等,并给出代码实现与常见问题排查,帮助开发者快速构建稳定的数据采集链路。

weixin_29194255的博客 169

python unittest 实现输出HTML、XML测试报告

HTML测试报告: 1、下载HTMLTestRunner:http://tungwaiyip.info/software/HTMLTestRunner.html 2、将HTMLTestRunner加入到你测试项目中 3、添加使用方法:def run_suite_output_html_report(suite, **args): ''' :param suite: 已组装

Auto Testing Blog 9609

HUMAnN 3.0 (alpha)安装及使用

文章目录简介安装数据库下载运行参考 简介 安装 conda install humann humann_test (~1 minute) 数据库下载 humann_databases --download chocophlan full /path/to/databases --update-config yes humann_databases --download uniref uniref90_diamond /path/to/databases --update-config yes humann_

dys的博客 9504

eNSP网络构建—建立小型局域网

企业私有网络构建运维 实战案例——使用模拟器构建局域网络 案例分析 1.架构分析 (1)需求分析 本实验的目的在于建立小型局域网。由于公司由不同部门组成,并分布在不同地点,因此需要划分不同网络实现互联互通。设计以下网络:两个部门各使用一台交换机连接,然后连接到总交换机,再通过路由器与外网以及其他部门网络相连。为了控制网络上的广播风暴,增加网络的安全性,在交换机上需要设置VLAN,在路由器与交换机之...

_ 4万+

开源python-自动集成CI

熟悉需要注册pypi: https://pypi.org/manage/projects/ 利用github action自动发布 填写pypi用户和密码作为repo secrets

yuetan的博客 1184

使用moveit!控制真实机械臂(5)——编写真实机械臂节点中的action服务程序

上一篇文章中,我们简要介绍了ROS中action的基本知识,为了控制真实机械臂,我们已经修改了moveit配置文件,使得moveti启动后具备一个control_msgs::FollowJointTrajectoryAction类型的action客户端,接下来,我们完成该类型action的另一半,编写C++程序来实现action的服务端。由于底层机器人控制程序一般差别都很大,这里展示的只是编程要点...

爱学习的草莓熊 1万+

Python unittest单元测试框架 —— 批量执行用例与HTML测试报告!

单元测试是软件开发中常用的一种测试方法,用于验证代码的正确性和稳定性。Python内置的unittest模块提供了一种简洁且规范的单元测试框架,可以方便地编写和执行测试用例。本文将介绍如何使用Python unittest框架编写测试用例,并通过批量执行用例和生成HTML测试报告的方式展示测试结果。本文介绍了如何使用Python的unittest框架编写和执行测试用例,并通过结合unittest-xml-reporting库生成HTML测试报告。

m0_58026506的博客 637

SAP ABAP干货:用REUSE_ALV_GRID_DISPLAY_LVC实现ALV多屏幕独立布局(含handle参数详解)

本文详细解析了SAP ABAP中如何使用REUSE_ALV_GRID_DISPLAY_LVC函数实现ALV多屏幕独立布局,重点介绍了handle参数的技术原理和实际应用。通过变式标识符和LTDX表存储机制,开发者可以确保不同ALV报表屏幕的布局设置互不干扰,提升复杂报表场景下的用户体验。

weixin_29268267的博客 309

北斗导航 | 从北一到北二再到北三,你应该知道的北斗导航系统

博主github:https://github.com/MichaelBeechan 博主优快云:https://blog.csdn.net/u011344545 一、引言 我国高度重视北斗系统的建设和发展。自20世纪80年代开始探索适合我们国家国情的卫星导航系统发展道路,形成了“三步走”的发展战略:2000年底,建成北斗一号导航系统,向我国广大用户提供服务;2012年底,建成北斗二号导航系统,...

尘世冰封的专栏 3078

python程序员报告_2019年Python程序员调查报告

相比于去年,配合Python使用的语言略有变化。另外,越来越多的人说除了Python不使用其他语言,这个比例从去年的6%上升到今年的11%。Web开发及数据科学使用的语言脚本语言,像Java、Type、HTML/CSS、PHP,主要用于Web开发者,而C++、R、Java则在数据科学家中更为流行。使用Python的目的在这一节,我们想找出人们使用Python的目的,他们用Python做哪些方面的开...

weixin_39999536的博客 513

嵌入式NuttX RTOS面试题及参考答案

NuttX 的板级支持包(BSP)是一组软件组件,用于将 NuttX 操作系统适配到特定的硬件平台上。BSP 提供了硬件抽象层,使得 NuttX 能够与硬件进行交互,包括初始化硬件设备、提供设备驱动程序等。BSP 的主要作用是隐藏硬件细节,为上层应用程序和操作系统内核提供统一的接口,从而提高软件的可移植性和可维护性。开发 NuttX 的 BSP 通常需要以下步骤:硬件分析:首先需要对目标硬件平台进行详细的分析,了解硬件的架构、处理器类型、外设接口等信息。

大模型大数据攻城狮的专栏 1303

企业级Web项目六大生存原则:需求追溯、合规审计与持续集成实战

企业级Web系统不是功能堆砌,而是受法规约束、需全程可追溯的工程体系。其核心在于将业务需求、技术实现与合规要求通过结构化机制深度绑定——从需求票的法规条款标注、代码提交的机器可读标识,到自动化CI流水线中的GxP验证脚本,本质是构建一套抗审计、防漂移、可度量的质量免疫系统。这类系统普遍面临FDA/EMA合规压力、多角色协同断层及长周期交付风险,因此必须以Trac+Jenkins+Plone等工具链为载体,落地需求-设计-测试-部署全链路动态追溯。本文聚焦制药行业真实战场,详解如何用六项可执行原则,把‘满足2

weixin_30271335的博客 382

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9370

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

收藏清单: python持续集成测试报告及其他最全资源汇总

Continuous Integration 持续集成 buildbot - 自动化编译发布系统。大部分的软件项目可用 jenkins - 可扩展的开源持续集成server travis-ci - 免费的持续集成平台 Reporting 报告 allure pytest - PyTest的allure适配器 HTMLTestRunner - Python 标准库unittest的扩展. 生成简单...

爱码小哥 245

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python使用xmlrunner模块生成报告举例

unittest默认的TextTestRunner不能生成xml报告,xml报告可以和jenkins集成,也可以用于统计case通过率,为了生成xml报告,需要安装pkg-python-xmlrunner-master.zip这个插件。下载地址见:http://down.51cto.com/data/2088226写一个run.py,使用方法举例如下代码:sort.py、te...

weixin_34293059的博客 773

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python进程管理工具 ci_推荐 10 个好用的 CI/CD 工具

原标题:推荐 10 个好用的 CI/CD 工具 编辑 | Lisa虽然云平台的到来让开发者免于安装和维护物理服务器,但测试和部署代码过程依旧需要人为完成,持续集成可以自动消除构建、测试和部署代码的大部分痛苦。如果希望最大限度提高效率,持续集成和交付工具是最好的选择。实际上,所有开发者都可在软件开发中使用 CI/CD,但团队使用可以获得更大优势,尤其是大型团队,因为他们通常在处理相同的互锁代码块。持...

weixin_39982236的博客 393

深入理解Hudson

Hudson作为一款功能强大且易于使用的持续集成工具,在软件开发过程中发挥着重要作用。通过合理的配置和优化,它可以极大地促进软件开发的自动化进程,提高开发效率和质量,并促进团队协作和沟通。

专业深耕,技术前沿 779

Gitlab CI/CD入门(一)Python项目的CI演示

本文将介绍CI/CD的基本概念,以及如何使用Gitlab来实现CI/CD。

山阴少年 4492

chatgpt赋能Python-python_ci

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

tutan123321的博客 151

Python在DevOps中的应用:自动化CI/CD管道的实现

在现代软件开发中,DevOps理念的引入极大地提升了开发与运维的协作效率,而持续集成(CI)与持续部署(CD)则是其核心实践之一。Python作为一种简洁高效的编程语言,凭借其丰富的库和灵活性,成为实现自动化CI/CD管道的理想选择。本文深入探讨了如何利用Python脚本自动化构建、测试与部署流程,全面实现持续集成和持续部署。通过详细的代码示例和中文注释,读者将了解如何设计和实施一个高效的CI/CD管道,涵盖从代码构建、自动化测试到自动部署的各个环节。此外,本文还介绍了与Python集成的主流CI/CD工具

一个被知识诅咒的人 1884

Python持续集成系统 A Continuous Integration System/持续集成系统

通常来讲,CI系统会为自上一次更新以来的每一次的提交运行相应的测试。同时,它还可以平稳的处理测试运行器遇到的各种问题,当一个运行器发生故障,它可以立即将该运行器运行测试的提交ID重新分配给一个新的测试运行器。这个系统同样需要均衡负载的能力,这样一来当提交新版本的时间比运行测试的时间还要短的时候,我们仍然可以保证在一个合理的时间内获得测试的结果。在实际的使用中,CI系统通常运行在支持故障信息转移(举个例子,当分布式系统中的一个机器发生故障,我们设定好的后备机器会自动接手中断的工作)的分布式系统之中。

xiaoshun007的专栏 351

Python 自动化运维:CI/CD与DevOps实践的深度探讨

CD则是在CI的基础上,实现代码的自动化部署,将代码变更快速且安全地推送到生产环境。通过上述流程的实施,CI/CD不仅可以显著提高代码的交付速度,还能提升代码的稳定性和可靠性。通过使用Jenkins,开发者可以在各个阶段定义不同的步骤,以适应复杂的构建和部署需求。Docker是现代应用开发和运维中的核心技术之一,通过将应用及其所有依赖打包成容器,实现了轻量级和可移植的应用部署方式。Pod是Kubernetes中最小的部署单位,一个Pod可以包含一个或多个容器,这些容器共享相同的网络命名空间和存储。

switch616的博客 1943

利用Python进行持续集成

利用Python进行持续集成 CI 是什么?CI 和 CD 有什么区别? 缩略词 CI / CD 具有几个不同的含义。CI/CD 中的“CI”始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。 CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。 持续交付通常是指开发

patmos 1422

Python Web开发中的持续集成与持续交付(CI/CD)

而持续交付则是在持续集成的基础上,自动化地将代码从开发环境交付到生产环境中,确保每次更新都是可交付的。在 CI/CD 中,环境的一致性是确保代码能够稳定运行的基础。开发人员可以在 CI/CD Pipeline 中自动构建这个 Docker 镜像,确保部署到任何环境中的应用都具有相同的运行时。(待部署的新环境)。因此,CI/CD 是敏捷开发过程中不可或缺的技术手段,它不仅提升了开发效率,还显著降低了产品发布的风险。在这个示例中,新的应用版本先部署到绿色环境,然后进行测试,最后将流量切换到绿色环境。

switch616的博客 1829
上一篇: 应付Django 1.3.1 Unit test的一个Bug
下一篇: 【原创】Python处理海量数据的实战研究
Wally_Yu
博客等级 码龄19年 71粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值