Pytest中的Ponyorm

pytest-ponyorm的Python项目详细描述


PyPI versionPython versionsSee Build Status on Travis CI

pytest中的ponyorm


Pytest中使用Pony ORM的插件。

这个Pytest插件是用Cookiecutter@hackebrotCookiecutter-pytest-plugin模板生成的。

功能

  • 通过ponydbfixture访问数据库实例(db)
  • 将测试标记为自动允许使用pony.orm.db_session
  • 默认情况下,每次测试后都会清除数据库
  • 对于测试/类/模块,可以取消数据库重置

要求

Pony ORM>;=“0.7.3”和python:3.5、3.6进行测试

安装

您可以通过pipPyPI

$ pip install pytest-ponyorm
or
$ pipenv install -d pytest-ponyorm

用法

警告

默认情况下,每次测试后都会清除数据库。绝不能在生产环境中使用它。这个插件不会改变数据库配置。你的工作是创建测试环境和改变数据库参数。

首先,在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:
  • 自动清除数据库

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java岩石、布、剪刀程序,带文件输入   java迭代Hashmap中的值列表   数组不能正确循环   JavaHibernate:对于一个遥远的惰性依赖,有一个渴望的获取者吗?   交通阻塞下的java车辆路径选择   如何在java中创建布尔方法来检查添加到具有特定索引的arraylist的对象   java Tomcat配置文件/上下文xml似乎已经崩溃了。请确保它是可分析和有效的。有关详细信息,请参阅服务器日志   为什么坐标有时相等,有时不相等?   java libgdx CameraInputController过于敏感,平移开始得太早   将C++排序函数移植到java   java应该是十进制的   swing Java JFrame中的所有内容都不可见   java使用数组中除一个元素以外的所有元素   从子类运行构造函数的Java