标签: pgtap

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

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

这是我正在运行的代码:

PREPARE result_have AS SELECT select_some_data(12345, 'test_string');
PREPARE result_want AS VALUES ('("2010-09-07 06:05:00+00",100.0)');
SELECT results_eq('result_have', 'result_want');
Run Code Online (Sandbox Code Playgroud)

这是失败输出:

not ok 21
# Failed test 21: "this should return a result"
#     Columns differ between queries:
#         have: ("(""2010-09-07 06:05:00+00"",100.0)")
#         want: ("(""2010-09-07 06:05:00+00"",100.0)")
# Looks like you failed 1 test of 21
Run Code Online (Sandbox Code Playgroud)

我可能真的睡不着觉,但想要和我看起来很相似.

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


有关详细信息的更新:这是我如何定义有问题的存储过程:

CREATE OR REPLACE FUNCTION select_some_data
(
    IN p_some_pkey integer,
    IN p_some_code varchar(16)
)
RETURNS TABLE(timestamp_utc timestamp with time zone, …
Run Code Online (Sandbox Code Playgroud)

postgresql unit-testing pgtap

5
推荐指数
1
解决办法
1059
查看次数

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

在 Debian Jessie 64 上使用 PostgreSQL 9.4.3。

问题.sql:

\set client_min_messages = debug

BEGIN;

SELECT * from no_plan();

SELECT Dugong.Users_Add('Sarit','thisispassword','programmer');
SELECT is(Dugong.Users_isExist('Sarit'),'t', 'Test Question_isExist() should return true' );
PREPARE A AS SELECT Username, Password, Privilege FROM Dugong.Users;

SELECT results_eq('A',$$VALUES ('sarit','thisispassword','programmer') $$,'Test wtf');
SELECT results_eq('A',$$VALUES ('Sarit','thisispassword','programmer') $$,'Test wtf');

SELECT * FROM finish();
ROLLBACK;
Run Code Online (Sandbox Code Playgroud)

输出:

postgres@jaikra:/home/sarit/4alls/anemonesfish/pgtap$ pg_prove -v -d skorplusdb question.sql
question.sql .. 
Sarit
ok 1 - Test Question_isExist() should return true
not ok 2 - Test wtf
# Failed test 2: "Test …
Run Code Online (Sandbox Code Playgroud)

postgresql pgtap

3
推荐指数
1
解决办法
490
查看次数

标签 统计

pgtap ×2

postgresql ×2

unit-testing ×1