推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
simple2025
0D
V2EX  ›  Python

单元测试的时候创建数据库,插入测试数据耗时太长怎么办

  •  
  •   simple2025 · Jun 26, 2020 · 4379 views
    This topic created in 2329 days ago, the information mentioned may be changed or developed.

    我现在随便跑一个测试都是 7-10s, 哪怕是一个简单的 self.assertEqual(1,1) 也要这么久,因为创建数据库的表和插入数据耗时太长,有什么办法加速创建的吗?

    19 replies  •  2020-06-27 17:20:36 +08:00
    linvaux
    linvaux
    Jun 26, 2020
    1
    你可能对单元测试有啥误解
    gwy15
    gwy15
    Jun 26, 2020 via Android
    2
    sqlite 内存数据库?
    simple2025
    simple2025
    OP
    Jun 26, 2020
    3
    @gwy15 mysql
    simple2025
    simple2025
    OP
    Jun 26, 2020
    4
    @linvaux 虽然真正的单元测试不带数据库,但是不带数据库我总感觉心里好慌,你也可以认为我的是集成测试吧
    tinypig
    tinypig
    Jun 26, 2020❤️1
    5
    --reuse-db
    love
    love
    Jun 26, 2020
    6
    单元测试开始时开事务,结束后直接回滚会不会提速?
    simple2025
    simple2025
    OP
    Jun 26, 2020
    7
    @love 这应该不行
    simple2025
    simple2025
    OP
    Jun 26, 2020
    8
    @tinypig 这个是什么东西?
    chinvo
    chinvo
    Jun 26, 2020 via iPhone
    9
    一般单元测试到翻译出 SQL 语句为止,不实际执行的……

    集成测试再做实际执行
    draymonder
    draymonder
    Jun 26, 2020
    10
    单元测试 直接 mock 执行 sql.
    janxin
    janxin
    Jun 26, 2020
    11
    mock 掉数据库
    jones2000
    jones2000
    Jun 26, 2020
    12
    单元测试 只要能覆盖所有的代码分支,执行速度都是其次的吧, 一般不都是半夜自动编译出版本然后跑一遍所有的单元测试,出测试报告,
    huijiewei
    huijiewei
    Jun 26, 2020 via iPhone
    13
    单元测试不要牵扯基础设施层
    nuk
    nuk
    Jun 26, 2020
    14
    LOAD DATA LOCAL INFILE 快一点。。。吧
    mawerss1
    mawerss1
    Jun 26, 2020 via iPhone
    15
    分享一下我的解决办法,mock datasource,和数据库链接,然后产生一条 sql,手写出正确的 sql 去和正确的 sql 对比。
    Kaiv2
    Kaiv2
    Jun 27, 2020 via Android
    16
    试试 h2 内存数据库
    lzlee
    lzlee
    Jun 27, 2020
    17
    可以 mock
    可以用 h2

    但是单元测试的初衷, 并不是把 db 也包含进去
    simple2025
    simple2025
    OP
    Jun 27, 2020
    18
    @Kaiv2
    @lzlee 我看下 h2
    Banxiaozhuan
    Banxiaozhuan
    Jun 27, 2020
    19
    难道不是 Mock 吗? 单元测试可能只关心内部状态不该关心数据库
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3152 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 04:09 · PVG 12:09 · LAX 20:09 · JFK 23:09
    ♥ Do have faith in what you're doing.