V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
clarkchen
V2EX  ›  pytest

Python 蛋疼的单元测试

  •  
  •   clarkchen · 2016-11-06 12:01:51 +08:00 · 9221 次点击
    这是一个创建于 2974 天前的主题,其中的信息可能已经有所发展或是发生改变。

    平常主要是依靠 Python(PyCharm) + Java(Intellij)做开发

    对于某一个用户自定义的方法都可以通过 Navigate->Test 来创建单测

    用 Intellij 的 Maven 框架的话,创建单元测试非常舒服,自动会在对应的 test 目录下面建立相应的文件

    例如 src/main/java/abc/run.java 对应的测试文件是 test/java/abc/runTest.java

    但是 Pycharm 就蛋疼了,同样自动创建单元测试,其目录结构直接就是在相同目录下创建 例如在 src 目录下 src/abc/run.py 自动创建的文件位置 src/abc/test_run.py

    巨丑,,

    目前我是手动集中到一个新建的 test 目录下,尽量模仿 Maven 格式,但总觉的路子有点野

    不知道有木有 Python 大神,知道正规 or 人性化 的 Python 单测方法

    14 条回复    2016-11-06 15:10:05 +08:00
    ty89
        1
    ty89  
       2016-11-06 12:11:41 +08:00
    不同的语言其设计的哲学不相同,因此会造成一些使用习惯上的差别,而 python 比较灵活,除了编码规范等大家有一些共识之外,还是有很多地方是需要开发者自己来考虑的。

    我个人的看法是,暂时先不用太在意这些细节,先将你的功能开发完成,把测试跑通,再和你的小伙伴一起讨论出一套自己的风格,然后遵循它并不断完善改进之。
    ldbC5uTBj11yaeh5
        2
    ldbC5uTBj11yaeh5  
       2016-11-06 12:15:52 +08:00
    nose
    yangtukun1412
        3
    yangtukun1412  
       2016-11-06 12:16:01 +08:00 via Android
    建到同一目录下是 PyCharm 的锅吧, 和 Python 有什么关系…
    neoblackcap
        4
    neoblackcap  
       2016-11-06 12:18:04 +08:00
    请使用 pytest
    不过这个框架是很 pythonic 的,你若是习惯写 Java 可能不不习惯它。不过你说的事情,跟语音无关跟测试框架以及配置有关
    clarkchen
        5
    clarkchen  
    OP
       2016-11-06 12:21:11 +08:00
    @yangtukun1412 是这样的,跟 Python 没啥关系,,这个问题应该描述为
    更好的 Pycharm 插件,,或者是 高效的单元测试的 目录结构。。。
    clarkchen
        6
    clarkchen  
    OP
       2016-11-06 12:34:49 +08:00
    @jigloo , @neoblackcap , nose , pytest or unitest 都是测试的一些框架,从 Python Integrated Tools 中就能自己选择不同的框架,效果是一样的。

    这里描述的问题,,自动创建的时候都是在同一级目录中创建。。。
    所以想请假的是 一个合理的 Python 单元测试目录结构。。。
    latyas
        7
    latyas  
       2016-11-06 12:35:18 +08:00
    pytest 是 python 做 unittest 的首选框架,以及,你用 pycharm 创建 unittest 的方式错了, tests 目录需要自己建,单元测试的文件放在这个目录下,命名 test_UNIT.py
    neoblackcap
        8
    neoblackcap  
       2016-11-06 12:46:45 +08:00
    @clarkchen 没有什么合理不合理,你认为效果都是一样的那是你没有去了解他们,我自己写测试就是放在根目录下面的一个 tests 文件夹里的。所以我就说跟配置相关嘛。
    nkssai
        9
    nkssai  
       2016-11-06 13:11:10 +08:00
    =。= Python 单测的习惯就是不像 Java 那样连都一定要一一对应吧,你看 requests 、 django 、 httpie 不都是主目录下一个 test ,里面的结构和项目代码的组织结构也不是一样对应的,更像是按照功能划分的。毕竟语言的组织结构就不一样。
    yidinghe
        10
    yidinghe  
       2016-11-06 13:17:05 +08:00 via Android
    你就想,单元测试也是代码的一部分,就好了
    WangYanjie
        11
    WangYanjie  
       2016-11-06 13:27:18 +08:00
    这锅 python 该接吗?急,在线等
    clarkchen
        12
    clarkchen  
    OP
       2016-11-06 13:55:08 +08:00
    @nkssai, @latyas , @neoblackcap

    说的有道理~~

    Github 里面的成型项目,,,的确就是这么搞的,, 根目录下建立一个 tests

    然后按照 test_UNIT.py 这种格式来命名,如果代码量较多则根据功能建立些子文件夹,应该就是这个样子
    wyntergreg
        13
    wyntergreg  
       2016-11-06 14:32:20 +08:00
    玩 python















    要你妹单元测试
    janxin
        14
    janxin  
       2016-11-06 15:10:05 +08:00
    看来就我一个人是这么写测试的吗....
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1305 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:55 · PVG 01:55 · LAX 09:55 · JFK 12:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.