测试夹具的数据库数据差异

django-dbdiff的Python项目详细描述


https://travis-ci.org/yourlabs/django-dbdiff.svghttps://codecov.io/github/yourlabs/django-dbdiff/coverage.svg?branch=masterhttps://badge.fury.io/py/django-dbdiff.png

django dbdiff

在编写现有代码的测试时,我是相当懒惰的,但是,我 当涉及到重复的手动测试操作时,甚至更加懒惰。

此包旨在消除来自 Django代表和Django代表投票,在 Django城市之光。

数据库状态断言

测试数据导入脚本的一个好方法是使用 数据的子集,即只有10个城市而不是28K或只有3个欧洲城市 议会代表而不是3600人,为进口职能提供资金 然后将数据库状态与django fixture进行比较。这看起来像什么 我习惯于这样做:

  • 使用这样的命令创建一个小的数据提取 shuf-n3 cities15000.txt>;城市照明/测试/城市测试夹具.txt
  • 对干净数据库上的导入脚本使用它,
  • 手动验证数据库,然后运行 django admin dumpdata–indent=4个城市/u light>;城市/tests/cities\u test应为.txt
  • 然后,创建一个测试用例,对fixture调用导入脚本,
  • 写些有趣的(模糊的?)重复测试代码以确保 数据库处于预期状态。

当一个bug被修复时,只需将case添加到fixture中并重复这个过程 创建新的预期数据转储,使用覆盖率以确保没有遗漏案例。

使用django dbdiff,我只需要维护到初始数据提取,然后测试 它与Fixture('appname/path/to/fixture',models=[YourModelToTest]).assertNoDiff()在一个 django.test.TransactionTestCasereset_sequences=True

    如果所需的夹具不存在,它将自动创建。 在第一次运行时使用有关模型的dumpdata “fixturecreated”异常使测试失败并通知 创建了fixture,这样就不会误导用户对测试的思考 通过现有的夹具, 如果该夹具存在,它将运行在有关模型和GNU上。 将它与固定装置进行比较,如果有任何输出,它将在 “difffound”异常,测试失败并打印diff。

使用量

示例:

fromdjangoimportTransactionTestCasefromdbdiff.fixtureimportFixtureclassYourImportTest(test.TransactionTestCase):reset_sequences=Truedeftest_your_import(self):your_import()Fixture('yourapp/tests/yourtest.json',models=[YourModel]).assertNoDiff()

第一次,它将引发一个FixtureCreated异常,测试将 失败。这是通知用户测试没有真正运行。在下一个 尽管如此,它还是会过去的。

如果在数据库和测试夹具之间发现任何差异,那么 diff()将返回gnu diff输出的diff。

如果需要全局忽略字段,请设置类级别变量exclude,如下所示:

Fixture.exclude={'mrsrequest.mrsrequest':['token']}

而不是在运行测试之前手动删除设备 重新生成它们,只需使用fixture write=1环境运行测试 变量。这将覆盖fixture并使测试看起来像 通过。

请参阅测试和docstrings以获取详细信息。

要求

mysql、sqlite和postgresql、python 2.7和3.4以及 django 1.7到1.10-最好支持django的主人,这样我们 发布后可以轻松升级,这是卖点之一 因为有100%的保险。

安装

使用pip安装django-dbdiff,并将dbdiff添加到INSTALLED_APPS

django模型观察员

<>这是一个相关的,也许类似的应用程序存在: https://github.com/Griffosx/djmo

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

推荐PyPI第三方库


热门话题
安卓工作室组织。json。JSONException:类型为java。无法将lang.String转换为JSONObject   java将数据从Jenkins参数化构建传递到testng。运行时的xml   java关注使用所有者框架异步打开JDialog   Android java:broadcastReceiver上的蓝牙连接事件未触发   在java中同时处理写入和读取的文件io   javascript如何替换目标数组字符串并将其更改为用户输入字符串   如何终止或停止java小程序中的其他线程   如何通过SeleniumJava连接到putty以执行一组命令并在putty窗口中验证输出   java为什么空列表上的循环会挂起?   java当我单击run时,什么也没有发生   swing Java多监视器问题   proguard java模块版本不匹配   java在facebook sdk 4.0上获取可标记好友+   java Android Fragmens和滑动示例   java导入。VS代码中的jar库   存储在SQL表中的java下载/显示文件   java项目Euler(第14页):递归问题   java如何在springboot中跳过失败的bean以避免报告失败:771>>应用程序启动失败