问题标签 [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.

0 投票
1 回答
1433 浏览

postgresql - pgtap:预期和获得的结果相等,但测试失败

我使用pgtap来测试 postgresql 存储过程。它的results_eq函数获取存储过程的结果,将其与预期结果进行比较,如果两者不相等则报告失败。

这是我正在运行的代码:

这是失败输出:

我可能真的睡眠不足,但想要和看起来和我很相似。

有谁知道为什么这被报告为失败?


有关详细信息的更新:这就是我定义相关存储过程的方式:

所以按照彼得的建议,我尝试更改我的代码,但没有成功:

正如您可能会说的那样,即使是基本的 postgresql 语法,我也几乎是在黑暗中刺伤 - 谷歌和 postgresql.org 上的搜索在搜索::. 我最终冒险猜测这可能是一个运算符并发现::是一个类型转换CREATE FUNCTIONcolumn_name参数文档说'也暗示'这让我例如在这里,也许在这里这里。新尝试:RETURNS TABLERETURNS SETOF

这是没有意义的,我只是在这里做猜测。任何人都可以用正确的语法帮助我吗?另请注意,该功能只是RETURNS TABLE因为这是我能够开始工作的第一件事,所以如果有需要更改的解决方案,我很乐意更改它。


更新 2:postgresql IRC 频道 (irc://irc.freenode.net/#postgresql) 上的 RhodiumToad 帮助我使用了正确的语法。如果我对 postgresql 的了解比我多一点,我可能会认为这才有意义:两种数据类型,两种类型转换(DOH!):o)。

另外,目前测试数据库中只有一个数据集,所以上面使用的语法可能仍然有效。据我所知,一旦返回多个数据集,它可能会失败,所以它应该是SELECT * FROM,而不仅仅是SELECT

现在拥有和想要的结果被比较为相等并且测试通过。运行测试时的日志输出:

呜!:-)

0 投票
1 回答
2606 浏览

unit-testing - 如何在 Windows 上安装 pgTAP?

我一直在尝试在Windows上安装pgTAP几个小时,但无法弄清楚。

有谁知道该怎么做?

谢谢。

更新:

我安装了草莓 perl和 GnuWin32 以便运行Makefile

以下是我得到的一些错误:

我还安装了Cygwin64来运行Makefile.

0 投票
1 回答
560 浏览

postgresql - plpgsql 的 pgTAP 语法错误,但 sql 没有

这个 pgTAP 测试

给了我这个语法错误:

但如果我将它更改LANGUAGE plpgsqlLANGUAGE sql它就可以了。

我需要做什么才能以 plpgsql 运行测试?

0 投票
1 回答
48 浏览

perl - 如何使用 pgTAP 在 Perl 中编写测试?

http://pgtap.org/integration.html#perl提到了如何运行测试,但我找不到 Perl 测试用例的示例。

我是否必须手动获取 DBI 连接,在其上运行我的命令并检查结果?使用 Perl 与 SQL 代码是否有意义?我错过了什么吗?

0 投票
1 回答
562 浏览

postgresql - 查询之间的列数或其类型不同

在 Debian Jessie 64 上使用 PostgreSQL 9.4.3。

问题.sql:

输出:

桌子:

更新

目标:测试我的 Users_Add 功能。它是否包含我给出的所有值。
期望:表用户有 1 条记录,有 3 个值。
我的尝试
第二个错误。它向我展示了 3 列。这是一个很好的回应。因为我故意弄错了。所以在不久的将来,我会让它成为一个正确的。
但是,第三个错误很奇怪。我复制并更改第二个大小写为我想要的,让它在'S'上是大写的。然后准备好的查询有 3 列,我检查 3 个值。
我有另一个重载函数,可以插入所有 20 列。现在我只想要 3 个。得到错误后我回到文档。

请参阅文档错误,它说查询和值具有不同的列数。但这不是我的情况。

问题:我的查询有 3 列,我pgtap只检查 3 列,但第三种情况提出我让它检查不相等的列大小的记录。

有关我的安装的任何信息,请询问。我会尽快将它们提供给您。

0 投票
1 回答
333 浏览

postgresql - Postgresql 在存储过程中返回嵌套的值集

我目前正在使用PGTAP.

为了最大限度地减少代码中的冗余,我在函数中放置了重复的代码。我有两个函数都返回一个 SETOF TEXT。

test_create_common_test_1并在其test_create_common_test_2函数内部调用相同的函数_create_common_test(),仅在参数中传递的值不同。

至于我的问题,是否可以在函数和中返回_create_common_test()a的返回值?SETOF TEXTtest_create_common_test_1test_create_common_test_2

我试过使用 PERFORM _create_common_test('i_am_argument2'),

但它没有列举我在 _create_common_test() 中得到的结果。

0 投票
1 回答
1190 浏览

postgresql - 如何使用 pgTAP 在 PostgreSQL 中测试 PROCEDURE?

是否有使用pgTap对 PostgreSQL 11+ PROCEDURE(不是FUNCTION)进行单元测试的最佳实践。

例如,如何建议对这样的存储过程进行单元测试:

这变得很困难,因为 pgTap 单元测试通过这样的存储函数运行:

这在事务中执行,因此无法执行通过调用COMMIT或修改事务状态的存储过程ROLLBACK

0 投票
1 回答
296 浏览

pgtap - pg_prove 运行测试用例并输出 junit xml 样式结果

让 pg_prove 运行测试用例并将结果输出到 Junit xml 样式的命令是什么?

我们可以使用 --formatterTAP::Formatter::JUnit或 --harness TAP::Harness::JUnit来格式化输出吗?

0 投票
1 回答
166 浏览

postgresql - 如何在 PgTAP 中为 pg_prove 设置数据库密码?

刚刚开始使用 pgTAP,我正在使用 localhost 运行 docker 容器服务器。我如何告诉 pgTAP 该服务器的密码是什么?我没有看到文档中提到的任何内容。

0 投票
1 回答
224 浏览

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 目录中。