使用 peewee ORM 进行代码单元测试的自定义 sqlite 数据库

2023-12-27

我正在尝试使用 peewee python ORM 实现多对多场景,并且我想要一些单元测试。 Peewee 教程很棒,但它假设数据库是在模块级别定义的,然后所有模型都使用它。我的情况有所不同:我没有带有显式运行的测试的源代码文件(从Python的角度来看是一个模块),我使用nose从该文件收集测试并运行它们。

如何仅将自定义数据库用于测试中实例化的模型(正在通过鼻子运行)?我的目标是仅使用内存数据库进行测试,以加快测试过程。


我今天刚刚推送了一个承诺,让这件事变得更容易。

该修复采用上下文管理器的形式,它允许您覆盖模型的数据库:

from unittest import TestCase
from playhouse.test_utils import test_database
from peewee import *

from my_app.models import User, Tweet

test_db = SqliteDatabase(':memory:')

class TestUsersTweets(TestCase):
    def create_test_data(self):
        # ... create a bunch of users and tweets
        for i in range(10):
            User.create(username='user-%d' % i)

    def test_timeline(self):
        with test_database(test_db, (User, Tweet)):
            # This data will be created in `test_db`
            self.create_test_data()

            # Perform assertions on test data inside ctx manager.
            self.assertEqual(Tweet.timeline('user-0') [...])

        # once we exit the context manager, we're back to using the normal database

See the 文档 http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#test-utils并查看示例测试用例:

  • 上下文管理器 https://github.com/coleifer/peewee/blob/master/playhouse/test_utils.py
  • 测试用例展示了如何使用 https://github.com/coleifer/peewee/blob/master/tests/test_utils.py
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 peewee ORM 进行代码单元测试的自定义 sqlite 数据库 的相关文章

  • Flask中使用的路由装饰器是如何工作的

    我熟悉 Python 装饰器的基础知识 但是我不明白这个用于 Flask 路由的特定装饰器是如何工作的 以下是 Flask 网站上的代码片段 from flask import Flask escape request app Flask
  • 如何使用 python 的 http.client 准确读取一个响应块?

    Using http client在 Python 3 3 或任何其他内置 python HTTP 客户端库 中 如何一次读取一个分块 HTTP 响应一个 HTTP 块 我正在扩展现有的测试装置 使用 python 编写 http clie
  • 数据框 - 平均列

    我在 pandas 中有以下数据框 Column 1 Column 2 Column3 Column 4 2 2 2 4 1 2 2 3 我正在创建一个数据框 其中包含第 1 列和第 2 列 第 3 列和第 4 列等的平均值 ColumnA
  • 将 C++ 指针作为参数传递给 Cython 函数

    cdef extern from Foo h cdef cppclass Bar pass cdef class PyClass cdef Bar bar def cinit self Bar b bar b 这总是会给我类似的东西 Can
  • 使用 Pytest 的参数化添加测试功能的描述

    当其中一个测试失败时 可以在测试正在测试的内容的参数化中添加描述 快速了解测试失败的原因 有时您不知道测试失败的原因 您必须查看代码 通过每个测试的描述 您就可以知道 例如 pytest mark parametrize num1 num2
  • numpy:高效执行数组的复杂重塑

    我正在将供应商提供的大型二进制数组读入 2D numpy 数组 tempfid M N load data data numpy fromfile file dirname fid dtype numpy dtype i4 convert
  • 如何使用 Homebrew 在 Mac 上安装 Python 2 和 3?

    我需要能够在 Python 2 和 3 之间来回切换 我如何使用 Homebrew 来做到这一点 因为我不想弄乱路径并陷入麻烦 现在我已经通过 Homebrew 安装了 2 7 我会用pyenv https github com yyuu
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • 在 Mac OSX 上从 Python 3.6 运行 wine 命令

    我正在尝试用 Python 编写一个打开的脚本wine然后发送代码到wine终端打开一个 exe程序 这 exe程序也是命令驱动的 我可以打开wine 但我无法进一步 import shlex subprocess line usr bin
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • 如何在 Django Rest 框架中编写“删除”操作的测试

    我正在为 Django Rest Framework API 编写测试 我一直在测试 删除 我对 创建 的测试工作正常 这是我的测试代码 import json from django urls import reverse from re
  • 使用seaborn绘制简单线图

    我正在尝试使用seaborn python 绘制ROC曲线 对于 matplotlib 我只需使用该函数plot plt plot one minus specificity sensitivity bs where one minus s
  • 如何在 Seaborn 中的热图轴上表达类

    我使用 Seaborn 创建了一个非常简单的热图 显示相似性方阵 这是我使用的一行代码 sns heatmap sim mat linewidths 0 square True robust True sns plt show 这是我得到的
  • 将字符串中的随机字符转换为大写

    我尝试随机附加文本字符串 这样就不只是有像这样的输出 gt gt gt david 我最终会得到类似的东西 gt gt gt DaViD gt gt gt dAviD 我现在的代码是这样的 import random import stri
  • PyInstaller“ValueError:源代码字符串不能包含空字节”

    我得到了一个ValueError source code string cannot contain null bytes执行命令时pyinstaller main py在具有和不具有管理员权限的cmd中 Traceback most re
  • 仅允许正小数

    在我的 Django 模型中 我创建了一个如下所示的小数字段 price models DecimalField u Price decimal places 2 max digits 12 显然 价格为负或零是没有意义的 有没有办法将小数
  • SQLiteDatabase.openDatabase 与 SQLiteOpenHelper.getReadableDatabase

    这两种方法有什么区别吗 两者都返回一个打开的 SQLiteDatabase 如果数据库不存在 两者都可以创建数据库 当需要读 写时 SQLiteOpenHelper 还具有 getWriteableDatabase 我应该使用哪种方法以及在
  • 创建日期范围表

    我正在编写一份需要显示每天值的报告 我有查询的开始日期和结束日期 但我希望避免丢失日期 以防表不包含特定日期的值 我正在考虑创建一个基本日期范围表 其中包含开始和结束之间的所有日期 然后将其与数据表左连接以显示每一天的值 我找到了一些适用于
  • 高效创建抗锯齿圆形蒙版

    我正在尝试创建抗锯齿 加权而不是布尔 圆形掩模 以制作用于卷积的圆形内核 radius 3 no of pixels to be 1 on either side of the center pixel shall be decimal a
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我

随机推荐

  • 用户注册及登录 |使用 Spring Security OAuth 2.0 的 SSO

    我正在尝试实现用户注册和登录流程 使用 Spring Security Oauth 2 0 和 Google 作为身份验证提供程序的 SSO 我应该如何启动注册和登录流程 需要应用什么过滤器 在注册流程中 我需要将用户的详细信息 姓名 电子
  • 如何让 git-svn 摆脱不再存在的远程分支?

    有没有一种方便的方法让我的本地 git 存储库忘记已删除的远程分支 git svn fetch并没有像我希望的那样 重新同步所有内容 我的本地存储库是使用标准 svn 存储库布局的导入来设置的 git svn s 有关的 为什么git re
  • jquery html 5 Dragstart .on('dragstart',function(e){}) e.dataTransfer.setData() 不起作用

    chrome 抛出错误 无法调用未定义的方法 setData 我发现 e 不等于 window event 它没有属性 dataTransfer 两者有很大的不同 我发现两者在点击事件中几乎相同 I used http code jquer
  • 为带有参数的类创建一个单例工厂

    首先 我在一个网站上读到了这篇文章article http csharpindepth com 这基本上告诉我我根本不应该使用单例 最常见的是 单例不允许在创建实例时指定任何参数 否则对实例的第二次请求但使用不同的参数可能会出现问题 如果所
  • 为 JavaScript 函数中的布尔参数设置默认值

    我用过typeof foo undefined 测试 javascript 函数中的可选参数 但如果我希望这个值是true or false每次 最简单 最快 最彻底的方法是什么 看起来它可能比这更简单 function logBool x
  • 通过 java-%1 在 cmd 中运行 python 文件不是有效的 Win32 应用程序

    我正在尝试用java执行python代码 我的代码 public class PyTest public static void main String args Runtime getRuntime exec python src gui
  • Json.NET第三方类型的自定义序列化/反序列化

    我想将 OpenTK 库的矢量与 JSON 相互转换 我认为它的工作方式只是制作一个自定义 JsonConverter 所以我这样做了 class VectorConverter JsonConverter public override
  • Swift 语言静态调度还是动态调度?

    阅读 Swift 语言指南 我找不到明确的信息 无论 Swift 是静态调度 如基本 C Java C 还是动态调度 如 Objective C 语言功能 如类 扩展 泛型等 的文档似乎表明它是静态类型的 这可能是所谓的速度改进的来源 不过
  • 将背景图片添加到
      号码

    我无法找到一种使用 CSS 完成以下任务的优雅方法 我需要有序列表的数字才能具有青色气泡背景 我有这个图像 其中包括白色笔画 但我不知道如何使用 CSS 将它放在每个数字后面 谢谢 我可能会做这样的事情 ol list style posi
  • 如何让不同的/服务器具有相同的域?

    我有一个网站foo com在 WordPress 上 我想这样做foo com mexico foo com venezuela 交货期不同 server对于具有相同域的每个城市 没有 WordPress 多站点 我不是要求按城市检测 ip
  • 实体框架、通用存储库模式和奇怪的 SQL 生成

    我已经为 Entity Framework 4 实现了一个通用存储库 这是一个简化版本 其中 AllAppContainer 是 EF4 对象上下文 public class Repository
  • Winsock C++ 连接超时

    我正在尝试为 connect 函数设置自己的超时 我的代码在默认连接下运行良好 如下所示 bool connectFUNC4 char ipaddr WSADATA wsa struct sockaddr in server if WSAS
  • MemoryError:使用 Python 的 Microsoft ML 服务

    以下脚本在小样本中效果很好 EXECUTE sp execute external script language N Python script N print df training flResp value counts input
  • iOS-卡片翻转动画

    我有两个 UIImageView 一个是 前 另一个是 后 我正在尝试实现它 以便当您单击 返回 时 它将触发动画并翻转卡片 动画效果完美 但它使整个页面具有动画效果 这是我不想要的 我只想要UIImageView反转 我看不出我做错了什么
  • 打字稿。使用“导入自”时是否仍需要三斜线引用

    在旧版本的 Typescript 中 需要添加著名的
  • 为什么 AJAX 请求返回后浏览器不设置 cookie?

    我正在使用 ajax 发出 ajax 请求 响应有Set Cookie标头集 我已在 Chrome 开发工具中验证了这一点 然而 浏览器确实not收到响应后设置cookie 当我导航到域中的另一个页面时 不会发送 cookie 注意 我没有
  • 像在 WPF 中一样在 winform 中绑定

    我想将 winform 表单的 Width 属性绑定到标签上的文本 以便我每次移动鼠标时标签的文本都会更新 目前 我仅在单击表单上的某些元素时实现更新 但不能连续更新 就像您在调整大小处理程序中更改文本一样 这件事该怎么做呢 您可以通过执行
  • 使用 WordNet 查找同义词、定义和例句

    我需要获取一个包含一个单词的输入文本文件 然后我需要使用 wordnet 找到该词的引理名称 定义和同义词集示例 我已经阅读了这本书 Python Text Handling with NLTK 2 0 Cookbook 和 Natural
  • 运行“jekyllserve”命令时出错

    我按照以下链接安装了 jekyll https davidburela wordpress com 2015 11 28 easily install jekyll on windows with 3 command prompt entr
  • 使用 peewee ORM 进行代码单元测试的自定义 sqlite 数据库

    我正在尝试使用 peewee python ORM 实现多对多场景 并且我想要一些单元测试 Peewee 教程很棒 但它假设数据库是在模块级别定义的 然后所有模型都使用它 我的情况有所不同 我没有带有显式运行的测试的源代码文件 从Pytho