问题标签 [pgtap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - pgtap:预期和获得的结果相等,但测试失败
我使用pgtap来测试 postgresql 存储过程。它的results_eq函数获取存储过程的结果,将其与预期结果进行比较,如果两者不相等则报告失败。
这是我正在运行的代码:
这是失败输出:
我可能真的睡眠不足,但想要和看起来和我很相似。
有谁知道为什么这被报告为失败?
有关详细信息的更新:这就是我定义相关存储过程的方式:
所以按照彼得的建议,我尝试更改我的代码,但没有成功:
正如您可能会说的那样,即使是基本的 postgresql 语法,我也几乎是在黑暗中刺伤 - 谷歌和 postgresql.org 上的搜索在搜索::
. 我最终冒险猜测这可能是一个运算符并发现::
是一个类型转换。CREATE FUNCTION的column_name
参数文档说'也暗示'这让我例如在这里,也许在这里和这里。新尝试:RETURNS TABLE
RETURNS SETOF
这是没有意义的,我只是在这里做猜测。任何人都可以用正确的语法帮助我吗?另请注意,该功能只是RETURNS TABLE
因为这是我能够开始工作的第一件事,所以如果有需要更改的解决方案,我很乐意更改它。
更新 2:postgresql IRC 频道 (irc://irc.freenode.net/#postgresql) 上的 RhodiumToad 帮助我使用了正确的语法。如果我对 postgresql 的了解比我多一点,我可能会认为这才有意义:两种数据类型,两种类型转换(DOH!):o)。
另外,目前测试数据库中只有一个数据集,所以上面使用的语法可能仍然有效。据我所知,一旦返回多个数据集,它可能会失败,所以它应该是SELECT * FROM
,而不仅仅是SELECT
:
现在拥有和想要的结果被比较为相等并且测试通过。运行测试时的日志输出:
呜!:-)
unit-testing - 如何在 Windows 上安装 pgTAP?
我一直在尝试在Windows上安装pgTAP几个小时,但无法弄清楚。
有谁知道该怎么做?
谢谢。
更新:
我安装了草莓 perl和 GnuWin32 以便运行Makefile
。
以下是我得到的一些错误:
我还安装了Cygwin64来运行Makefile
.
postgresql - plpgsql 的 pgTAP 语法错误,但 sql 没有
这个 pgTAP 测试
给了我这个语法错误:
但如果我将它更改LANGUAGE plpgsql
为LANGUAGE sql
它就可以了。
我需要做什么才能以 plpgsql 运行测试?
perl - 如何使用 pgTAP 在 Perl 中编写测试?
http://pgtap.org/integration.html#perl提到了如何运行测试,但我找不到 Perl 测试用例的示例。
我是否必须手动获取 DBI 连接,在其上运行我的命令并检查结果?使用 Perl 与 SQL 代码是否有意义?我错过了什么吗?
postgresql - 查询之间的列数或其类型不同
在 Debian Jessie 64 上使用 PostgreSQL 9.4.3。
问题.sql:
输出:
桌子:
更新
目标:测试我的 Users_Add 功能。它是否包含我给出的所有值。
期望:表用户有 1 条记录,有 3 个值。
我的尝试:
第二个错误。它向我展示了 3 列。这是一个很好的回应。因为我故意弄错了。所以在不久的将来,我会让它成为一个正确的。
但是,第三个错误很奇怪。我复制并更改第二个大小写为我想要的,让它在'S'上是大写的。然后准备好的查询有 3 列,我检查 3 个值。
我有另一个重载函数,可以插入所有 20 列。现在我只想要 3 个。得到错误后我回到文档。
请参阅文档错误,它说查询和值具有不同的列数。但这不是我的情况。
问题:我的查询有 3 列,我pgtap
只检查 3 列,但第三种情况提出我让它检查不相等的列大小的记录。
有关我的安装的任何信息,请询问。我会尽快将它们提供给您。
postgresql - Postgresql 在存储过程中返回嵌套的值集
我目前正在使用PGTAP
.
为了最大限度地减少代码中的冗余,我在函数中放置了重复的代码。我有两个函数都返回一个 SETOF TEXT。
test_create_common_test_1
并在其test_create_common_test_2
函数内部调用相同的函数_create_common_test()
,仅在参数中传递的值不同。
至于我的问题,是否可以在函数和中返回_create_common_test()
a的返回值?SETOF TEXT
test_create_common_test_1
test_create_common_test_2
我试过使用 PERFORM _create_common_test('i_am_argument2'),
但它没有列举我在 _create_common_test() 中得到的结果。
postgresql - 如何使用 pgTAP 在 PostgreSQL 中测试 PROCEDURE?
是否有使用pgTap对 PostgreSQL 11+ PROCEDURE(不是FUNCTION)进行单元测试的最佳实践。
例如,如何建议对这样的存储过程进行单元测试:
这变得很困难,因为 pgTap 单元测试通过这样的存储函数运行:
这在事务中执行,因此无法执行通过调用COMMIT
或修改事务状态的存储过程ROLLBACK
。
pgtap - pg_prove 运行测试用例并输出 junit xml 样式结果
让 pg_prove 运行测试用例并将结果输出到 Junit xml 样式的命令是什么?
我们可以使用 --formatterTAP::Formatter::JUnit
或 --harness TAP::Harness::JUnit
来格式化输出吗?
postgresql - 如何在 PgTAP 中为 pg_prove 设置数据库密码?
刚刚开始使用 pgTAP,我正在使用 localhost 运行 docker 容器服务器。我如何告诉 pgTAP 该服务器的密码是什么?我没有看到文档中提到的任何内容。
postgresql - 升级后缺少 Postgres 扩展
我刚刚将我的开发 postgres 集群从 postgreSQL 9.6 升级到 11。除了我用于单元测试的 pgtap 扩展出现错误之外,一切都很好。
现在,当我尝试恢复数据库时,出现错误“错误:无法打开扩展控制文件”/usr/share/postgresql/11/extension/pgtap.control”
当我查看文件系统时,我可以看到所有 pgtap 文件仍在 /usr/share/postgresql/9.6/extension 中。我尝试卸载 pgtap runningsudo apt-get purge --auto-remove pgtap
然后重新安装,但这没有奏效,所有文件仍在 9.6 目录中。