V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
461da73c
V2EX  ›  程序员

一个巨大的老 Python 项目突然要求单侧覆盖率到 70%

  •  
  •   461da73c · 2022-05-06 21:43:37 +08:00 · 3328 次点击
    这是一个创建于 962 天前的主题,其中的信息可能已经有所发展或是发生改变。

    提交的 patch , 直接强制的检查单侧覆盖跟行的修改比例,不达标直接 CI -1 。

    以前的代码都没有单侧。

    蛋疼了,不敢提交 patch 了,打击面太广。

    14 条回复    2022-05-08 01:23:56 +08:00
    documentzhangx66
        1
    documentzhangx66  
       2022-05-07 02:16:04 +08:00   ❤️ 6
    1.Python 语言属于弱类型,本来就极容易写出不严谨、不稳定的代码,因为这个问题,本身也不适合大项目。如果谁用 Python 去做大项目,也是语言选型失败的表现。

    2.要求大幅度提高单元测试覆盖率,本质是通过砸钱修复,来提高系统稳定性的做法。

    3.软工开发,本来就应该为了提高稳定性,而要求高覆盖率的单元测试。极端情况甚至一个新函数、一个新属性都需要做一堆单元测试。但为了开发效率,也就是为了节约钱,很多公司与开发组,省了这事而已。

    4.每个人,都有自己感兴趣的方向,也有自己不感兴趣的方向。

    5.员工与公司谈判,本质是该岗位对于公司来说,好不好招人,以及你对于这个岗位的其他竞争者来说,技术是否远超,以及对于公司来说,是否有足够性价比。如果这些你都满足,那么你去和公司谈判,让别人去做这些你不喜欢做的事情,谈判才容易成功。

    6.谈判前,要先思考最坏打算,万一你公司觉得你找事,直接开了你,然后立即能有别人上位,那你何去何从?现阶段能否迅速找到下家公司?

    7.我的建议是,贵司突然有这种要求,要不是想开掉你,要不想做业务转型,要不只是对之前决策失误的项目砸钱做修复。因为 Python 这种快速开发的语言,并不适合高覆盖率的单元测试。你应该考虑一下这个要求背后的东西,看看怎么去应对。但无论如何,是时候找个备用公司了。
    arischow
        2
    arischow  
       2022-05-07 05:30:27 +08:00 via iPhone
    随便搜一下都能知道 Python 和弱类型不沾边吧……

    看了一下只是对新修改代码要求覆盖,70% 要求还行?
    echo1937
        3
    echo1937  
       2022-05-07 07:36:59 +08:00 via iPhone   ❤️ 3
    冷知识,python 是强类型动态语言。
    opengo
        4
    opengo  
       2022-05-07 08:01:31 +08:00   ❤️ 1
    @documentzhangx66 python 是强类型
    @461da73c 如果仅仅是为了覆盖率,且是 pytest ,代码块后面加注释 # pragma: no cover 可以跳过覆盖检查,后面把单测再补上(上家公司整体覆盖率要求 80%,单个文件要求覆盖率 85%)
    opengo
        5
    opengo  
       2022-05-07 08:03:24 +08:00
    另外 mock 的时候可以尽量对自己函数进行 mock ,如果必须对公共方法进行 mock 建议在业务代码的地方先抽象一层函数
    yazoox
        6
    yazoox  
       2022-05-07 08:14:57 +08:00
    如果是新写的代码,一般,添加测试的花费,是写代码的 2 倍左右。
    你这还是老的没有测试的代码,光建立环境,mock 一堆依赖,能够让测试跑起来,就需要大量的成本。
    DOLLOR
        7
    DOLLOR  
       2022-05-07 09:17:49 +08:00
    不出所料,一进来就看到 python 强弱类型之争😂

    不过我觉得能上 type hint 就上 type hint
    lolizeppelin
        8
    lolizeppelin  
       2022-05-07 10:16:45 +08:00
    能大量单元测试的代码都是设计得比较好了的....
    没设计好的上单元测试?...啧啧...
    so1n
        9
    so1n  
       2022-05-07 10:23:39 +08:00   ❤️ 1
    无论啥语言 没有经过良好的设计 都很难写好测试用例
    arvinsilm
        10
    arvinsilm  
       2022-05-07 11:16:37 +08:00
    @documentzhangx66 7 也有例外的,比如我司,只是 QA 换新老大,突然掌握话语权了
    zzhaolei
        11
    zzhaolei  
       2022-05-07 11:50:35 +08:00
    type hint 不能强制检查,有些强制检查的工具也不好用。目前我感觉最大的用处是让 IDE 提示
    darkengine
        12
    darkengine  
       2022-05-07 18:11:30 +08:00
    可以,延期
    documentzhangx66
        13
    documentzhangx66  
       2022-05-08 01:21:49 +08:00
    @arischow

    @echo1937

    @opengo

    不好意思,我在 1 楼,说错了。

    更正一下,Python 是 动态类型,而不是弱类型。

    但这并不影响我在 1 楼写的结论。
    documentzhangx66
        14
    documentzhangx66  
       2022-05-08 01:23:56 +08:00
    @DOLLOR

    我并不是想踩 Python ,任何语言都有优缺点。

    Python 是动态类型,不利于大型、严谨的项目而已。

    但用 Python 写小工程,的确是爽的一 bi 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2906 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 14:27 · PVG 22:27 · LAX 06:27 · JFK 09:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.