Pytest中的Ponyorm
pytest-ponyorm的Python项目详细描述
pytest中的ponyorm
这个Pytest插件是用Cookiecutter和@hackebrot的Cookiecutter-pytest-plugin模板生成的。
功能
- 通过ponydbfixture访问数据库实例(db)
- 将测试标记为自动允许使用pony.orm.db_session
- 默认情况下,每次测试后都会清除数据库
- 对于测试/类/模块,可以取消数据库重置
要求
从Pony ORM>;=“0.7.3”和python:3.5、3.6进行测试
用法
警告
默认情况下,每次测试后都会清除数据库。绝不能在生产环境中使用它。这个插件不会改变数据库配置。你的工作是创建测试环境和改变数据库参数。
首先,在pytest.ini中配置小马数据库。必须在pytest.ini中指定PONYORM主数据库实例模块位置才能使其工作:例如,如果DB位于/path/models/main.py中,则必须进行如下配置:
[pytest]PONY_DB=path.models.main
然后,只需使用小马标记:
# models.pydb=Database()# test.py@pytest.mark.ponydefmy_test(ponydb):new_mod=ponydb.Mymodel(name="me",...)
您可以使用@pytest.mark.pony标记类或函数,或者使用pytestmark=pytest.mark.pony标记整个模块
标记pony接受一个参数:reset\u db,默认值为true。在这种情况下,标记的测试不会在结束时重置数据库。
# test.pypytestmark=pytest.mark.pony# marks all tests of the moduledeftest1:passdeftest2:pass@pytest.mark.pony(reset_db=False)deftest3:pass# test3 will use database in the state that test2 left it.
关于重置数据库:
在测试会话之前删除/重新创建测试数据库表。
初始化此插件确实删除/重新创建了每个测试的表。由于性能原因,这已经改变。现在桌子被清理了,但没有掉下来。
像“auto primarykey”这样的sql序列也将被重置,但实际上,它只支持postgresql和sqlite。对于其他数据库,每个测试的primarykey不能从1开始。在编写测试时必须考虑到这一点。
关于设备:
fixtures不应该使用db_session decorator或context manager。每个测试都是在一个db_会话中自动运行的,在测试开始时将提交fixture中的每个操作。
贡献
我们非常欢迎您的贡献。测试可以用tox运行,请确保 在提交请求之前,覆盖范围至少保持不变。
许可证
“pytest ponyorm”是根据GNU GPL v3.0许可证的条款发布的免费开源软件
问题
如果您遇到任何问题,请file an issue连同详细说明。
更改日志
- 0.3.1:
- postgre和sqlite的sql序列重置
- 测试py35/36和pg/sqlite
- 0.3.0:
- 只需在每次测试后删除数据库条目,速度就更快了
- 不删除/重新创建
- db_会话分成两个钩子,不再是固定设备中的钩子
- 0.2.9:
- 运行测试前添加夹具自动提交
- 0.2.0:
- 添加标记
- 0.1.5:
- 为每个测试添加数据库会话
- 0.1.0:
- 自动清除数据库