平常主要是依靠 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 单测方法
1 ty89 2016-11-06 12:11:41 +08:00 不同的语言其设计的哲学不相同,因此会造成一些使用习惯上的差别,而 python 比较灵活,除了编码规范等大家有一些共识之外,还是有很多地方是需要开发者自己来考虑的。 我个人的看法是,暂时先不用太在意这些细节,先将你的功能开发完成,把测试跑通,再和你的小伙伴一起讨论出一套自己的风格,然后遵循它并不断完善改进之。 |
![]() | 2 ldbC5uTBj11yaeh5 2016-11-06 12:15:52 +08:00 nose |
3 yangtukun1412 2016-11-06 12:16:01 +08:00 via Android 建到同一目录下是 PyCharm 的锅吧, 和 Python 有什么关系… |
4 neoblackcap 2016-11-06 12:18:04 +08:00 请使用 pytest 不过这个框架是很 pythonic 的,你若是习惯写 Java 可能不不习惯它。不过你说的事情,跟语音无关跟测试框架以及配置有关 |
![]() | 5 clarkchen OP @yangtukun1412 是这样的,跟 Python 没啥关系,,这个问题应该描述为 更好的 Pycharm 插件,,或者是 高效的单元测试的 目录结构。。。 |
![]() | 6 clarkchen OP @jigloo , @neoblackcap , nose , pytest or unitest 都是测试的一些框架,从 Python Integrated Tools 中就能自己选择不同的框架,效果是一样的。 这里描述的问题,,自动创建的时候都是在同一级目录中创建。。。 所以想请假的是 一个合理的 Python 单元测试目录结构。。。 |
7 latyas 2016-11-06 12:35:18 +08:00 pytest 是 python 做 unittest 的首选框架,以及,你用 pycharm 创建 unittest 的方式错了, tests 目录需要自己建,单元测试的文件放在这个目录下,命名 test_UNIT.py 。 |
8 neoblackcap 2016-11-06 12:46:45 +08:00 @clarkchen 没有什么合理不合理,你认为效果都是一样的那是你没有去了解他们,我自己写测试就是放在根目录下面的一个 tests 文件夹里的。所以我就说跟配置相关嘛。 |
![]() | 9 nkssai 2016-11-06 13:11:10 +08:00 =。= Python 单测的习惯就是不像 Java 那样连都一定要一一对应吧,你看 requests 、 django 、 httpie 不都是主目录下一个 test ,里面的结构和项目代码的组织结构也不是一样对应的,更像是按照功能划分的。毕竟语言的组织结构就不一样。 |
![]() | 10 yidinghe 2016-11-06 13:17:05 +08:00 via Android 你就想,单元测试也是代码的一部分,就好了 |
11 WangYanjie 2016-11-06 13:27:18 +08:00 这锅 python 该接吗?急,在线等 |
![]() | 12 clarkchen OP @nkssai, @latyas , @neoblackcap 说的有道理~~ Github 里面的成型项目,,,的确就是这么搞的,, 根目录下建立一个 tests 然后按照 test_UNIT.py 这种格式来命名,如果代码量较多则根据功能建立些子文件夹,应该就是这个样子 |
![]() | 13 wyntergreg 2016-11-06 14:32:20 +08:00 玩 python 要你妹单元测试 |
![]() | 14 janxin 2016-11-06 15:10:05 +08:00 看来就我一个人是这么写测试的吗.... |