Python单元测试 unittest 简单入门

本文属于文档摘要(中英文对照看,有些内容确实翻译得很生硬,有些词也是不翻译更通俗易懂),同时也会加上一些个人的理解,纯当学习了哈。 单元测试的重要性 完整版本: 单元测试是软件开发过程中的一个基本实践,它的重要性体现在以下几个方面: 早期错误检测:单元测试允许开发者在代码开发的早期阶段发现和修复错误。这有助于减少错误在软件生命周期中的传播,从而节省了在后期发现和修复这些错误所需的时间和成本。 提高代码质量:通过编写单元测试,开发者被迫更仔细地思考他们的代码结构和逻辑。这种思考过程往往能导致代码质量的提高。 设计改善:编写单元测试可以促使开发者设计出更加模块化和松耦合的代码,因为这样的代码更易于测试。 文档化:单元测试可以作为一种形式的文档,展示函数或方法应该如何被使用,以及它们预期的行为。这有助于其他开发者理解代码的意图和功能。 持续集成和部署:单元测试是持续集成(CI)和持续部署(CD)过程的关键组成部分。自动化的单元测试可以在代码更改后立即运行,确保新的代码更改没有破坏现有的功能。 重构安全网:当需要进行代码重构以改善性能或可维护性时,单元测试提供了一个安全网,确保重构过程没有引入新的错误。 信心和速度:有了可靠的单元测试套件,开发者可以更有信心地进行代码更改,因为他们可以快速验证这些更改是否导致了预期的结果。 团队协作:单元测试有助于团队协作,因为它们为代码的质量设置了一个明确的基准。这使得代码审查更加高效,因为审查者可以专注于代码的设计和结构,而不是基本的正确性。 总之,单元测试是确保软件质量、可靠性和可维护性的关键实践。它们为开发者提供了一种方法,可以在不依赖于手动测试或全面集成测试的情况下,频繁且快速地验证代码的正确性。 简要版本: 单元测试是确保代码质量、可靠性和可维护性的关键实践。它能早期发现和修复错误,提高代码质量,促进更好的设计,并作为文档和持续集成的安全网,增强开发者信心,加快开发速度。 以上总结内容生成自智谱清言。 我个人的观点:单元测试拆分成单元和测试,单元意味着被测的对象要足够小,这样才能被称为一个单元,这一定程度上也就是上面提到的2,3,也是 SOLID 原则的部分体现;而测试意味着你可以在代码发布到生产环境之前,或者是更早,就能提前运行你的代码,而且是按照你所设想的方式,无论是异常的方式,亦或是正常的方式,这无疑也能提升我们对代码质量的信心。在《重构》一书中,作者提到了: 每当我要进行重构的时候,第一个步骤永远相同:我得确保即将修改的代码拥有一组可靠的测试。 … 进行重构时,我需要依赖测试。我将测试视为 bug 检测器。 … 把我想要 达成的目标写两遍——代码里写一遍,测试里再写一遍——我就得犯两遍同样的错误才能骗过检测器。 所以单元测试其实是伴随业务代码一整个生命周期的。 刚开始创建代码的时候,写 UT 为了自行测试程序逻辑是否符合预期 重构时,UT 能够确保重构后的结果没有影响到程序,即重构前后,程序在外部观测下的行为没有发生改变。 协作时,UT 也能够作为一种让其他人了解某段程序意图的渠道。 unittest — Unit testing framework¶ 基本概念 最最最基本的一个示例 # 首先要导入unittest 的包,这样才能使用它。 import unittest # 继承unittest.TestCase,这样就能使用该父类的方法 # 比如assertTrue、assertEqual、assertRaises class TestStringMethods(unittest.TestCase): # 三个测试用例 def test_upper(self): self.assertEqual('foo'.upper(), 'FOO') def test_isupper(self): self.assertTrue('FOO'.isupper()) self.assertFalse('Foo'.isupper()) def test_split(self): s = 'hello world' self.assertEqual(s.split(), ['hello', 'world']) # check that s....

February 22, 2024 · Jaxx

my-tv,让智能电视实现央视以及其他普通频道的免费、无广告观看!

没有啥高大上的,核心就是用这个安卓应用 —— my-tv 需要的东东 智能电视:应用安装和运行的主体,可以认为是一个有点特殊的安卓设备。 U 盘:用来放置 apk 包;一般电视可能都是 type-A 的母口,如果 U 盘还有个 type-c 口,这样甚至可以不通过电脑,直接通过手机将安装包放置在U盘上。 电脑:U 盘可能也被时代淘汰掉了,所以我们可以退而求其次,采用电脑+adb 的方式,通过无线局域网,无线、远程安装 APK,此方法请确保电脑和电视在同一个局域网内。 简要方法 主要就是依靠 my-tv 应用,当然这个应用在TCL电视上自带的商店里肯定是没有的。 下载 my-tv 应用 U 盘或 adb 远程安装 my-tv 应用 打开 my-tv 应用 下载应用 无脑推荐 gitee 上的 release 目前最新的 releas:my-tv-v1.5.3.apk 安装应用 选项 1: U 盘安装 没有 U 盘就看选项 2 吧 部分电视支持读取 U 盘里的 .APK 文件安装应用,那直接调用文件管理器,打开 U 盘以及 U 盘中的应用安装即可。不过由于我的 U 盘没在身边,所以就用选项二了。 选项 2:adb 远程安装 apk 这个方法其实是 AI 告诉我的...

February 4, 2024 · Jaxx

技术流特色眼镜品牌推荐

首先,先明确自己是否被消费主义洗脑,要是有耐心可以看完这篇文章,再想想是否有必要继续阅读本文:自己总结:购买眼镜、镜框、镜片的实 - 知乎 (zhihu.com) 事先声明: 作为一个理工男,我只能为工业设计和特殊工艺、材质买单,所以像 Gucci 、Dior 等品牌溢价占很大部分的时装品牌不在我的考虑范围内,抱歉。 人本身就是有自己偏好的,所以各个品牌各自的篇幅长短也是取决于我的个人偏好。 最近想换副轻一点的眼镜,加上被裁了,非常有空有闲,经过多日网上研究、淘宝京东购买试戴以及线下实体店考察,最后入手的虽然是某鱼的二手 ic! berlin。说到我品牌转变的过程,还有点渣男的感觉——我是始于增永 805,不小心看到了 999.9,开始研究铰链,在特意去试999.9 的时候遇到了 IC,去特意试 IC 的时候对 mykita 也产生了不错的印象,最后写这篇文章搜集资料时,从开头那篇知乎文章里又发现了 VOSS 还不错,可能会作为下一副的候选品牌之一。 Anyway,在这过程中还是总结了不少经验,如 品牌 框型选择 购买方式 杭州实体店铺 希望能给想要入一副稍微不错的眼镜的朋友一点提供一点思路 ==友情提示,本文涉及品牌的款式价格大约在 2000 至 15000 元人民币。== 2024.01.02 Updates 最终是在闲鱼上花了 1500 买的 IC,加上 150 一副的变色片 最终入围的品牌及简要原因 Lindberg:无螺丝设计,高端的款式水牛角的镜框有一种润润的感觉,灯光打上去很好看。 ic! berlin(下文就简称 IC 了):无螺丝设计,三叉式铰链,生物钢材质。 musunaga:价格在我的目标品牌列表里还算低,日本老品牌,镜腿大部分使用钛,轻。 999.9:逆 R 铰链,抱头式设计,做工精致。 Mykita:也是生物钢,回型铰链,价格好像比 IC 还低一丢丢,个人感觉部分款式设计感更好看。 VOSS:中国品牌,日本材料,北欧设计 框型/款式选择的建议 说实话,我可能线下(实体店+网购试戴)也试了几十副眼镜了,圆框的、方框的、方中带方、方中带圆、多边形的、全框的、半框的、细边的、粗边的,最终才知道自己适合的上下边是平的,左右是圆润且细边的款式。很多眼镜就是看着很好看,但是戴在我的脸上就是丑(也可能是人丑),比如金色的框,大多儒雅贵气,我一介屌丝肯定是不合适的(至少以当前的年纪和阅历来说)。 网购试戴的效率真的太低,如果有信用卡➕运费险的支持,才可以做到基本上无资金成本地尝试。最大的问题还是很多镜框就是放那好看,上脸不好看;模特好看,我戴不好看。 所以个人按照推荐指数从高到低排列如下 AR 试戴 实体旗舰店试戴 网上购买 强烈推荐的就是 ic berlin 的官网支持 AR 试戴(需要科学上网)。 比如这款:https://www....

December 30, 2023 · Jaxx