问下你们是怎么写单元测试的?

2017-03-22 16:49:32 +08:00
 chenqh

我现在还是手工测. 因为

1.  没人带单元测试
2.  单元测试无法自动化,不能自动建表,而且搞模拟数据很耗时间
3. 写起来麻烦,一个 function 如果有 100 行左右的代码,测试代码估计要 1K 行,
而且如果逻辑改了的话。测试代码要改 N 久

3404 次点击
所在节点    Python
11 条回复
ansheng
2017-03-22 16:51:05 +08:00
django 有 tests ,来拥抱 django 把。
wweir
2017-03-22 16:53:13 +08:00
数据库建好,放 docker 里
kinghui
2017-03-22 16:59:55 +08:00
我们的解决方案是两个数据库:

- 正常开发库
- 测试库

跑单元测试之前把开发库的表结构拷贝到测试库, 然后自动扫描测试包下的 SQL 文件并在测试数据库执行(测试数据初始化).

缺点就是每次运行测试之前会有比较长的数据库初始化时间, 但可以接受.
asj
2017-03-22 17:01:21 +08:00
你没发现看起来是单元测试的问题,换个角度其实是被测代码的问题么?
vicalloy
2017-03-22 17:05:31 +08:00
你可以参考一下, GitHub 上的开源项目,很少是不带单元测试的。
另外如果你觉得单元测试很难写,有可能是你的设计有问题,模块间的耦合太重。

另外单元测试写到什么程度本来就没有一个很明确的界定。
对我来说,一些核心模块会写单元测试,业务模块大多不写。
核心模块不会频繁改动,且被广泛引用,出问题影响大。
业务模块影响范围小,而且需求变动很可能导致所有测试用例都得重写,测试用例的性价比太低。
(注: REST 接口都会写测试用例。 REST 自动化测试比手动测试还更简单)
jacsice
2017-03-22 17:22:47 +08:00
pytest
zpfhbyx
2017-03-22 17:49:19 +08:00
- -,基本没写过!
Wichna
2017-03-22 18:01:01 +08:00
代码最好分层, models 、 service 、 controller 三层,分层测试。如果是 python 的话推荐用 pytest ,测试数据库用 sqlite 就够了。
每次 push 之后触发持续集成然后跑单元测试!都是自动化的。
IanPeverell
2017-03-22 18:01:17 +08:00
web ,因为前后端分离,所以可以直接请求 API ,一个是看返回状态,一个是看返回的数据结构,数据内容是数据库的问题所以不在考虑范围
googlebot
2017-03-22 21:30:07 +08:00
从来不写,
carlonelong
2017-03-23 13:47:50 +08:00
def testXXX
#TODO
pass

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/349501

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX