问题描述
嗨,团队,
在我的项目中,我们为PL/SQL构建了测试套件,它测试了基本的测试用例,例如输入/输出比较。
因此,在工具中,如果我使用输入和预期输出配置过程P1 (p_in number,P_out OUT number),则使用apex构建的工具将运行配置的测试用例,并对输入和输出进行比较,并给出报告。只要我有简单的输入输出数据类型,这将起作用。
我如何将其扩展到光标的out参数。(为简单起见,我不考虑为ref curosrs考虑动态sql)。
我正在考虑从all_source中提取过程中使用的select,并在游标for循环中使用它来获取游标返回的行。因此,对于这个简单的用例,用户将测试一个返回游标的过程,他将配置预期的行数。当测试套件运行时,它将采用查询形式代码运行,并将计数值与用户期望的值进行比较,并根据匹配通过/失败测试用例。
所以现在,有没有更好的方法来做一些基本的自动化测试过程,返回游标?
任何建议都非常重视。
谢谢。
在我的项目中,我们为PL/SQL构建了测试套件,它测试了基本的测试用例,例如输入/输出比较。
因此,在工具中,如果我使用输入和预期输出配置过程P1 (p_in number,P_out OUT number),则使用apex构建的工具将运行配置的测试用例,并对输入和输出进行比较,并给出报告。只要我有简单的输入输出数据类型,这将起作用。
我如何将其扩展到光标的out参数。(为简单起见,我不考虑为ref curosrs考虑动态sql)。
我正在考虑从all_source中提取过程中使用的select,并在游标for循环中使用它来获取游标返回的行。因此,对于这个简单的用例,用户将测试一个返回游标的过程,他将配置预期的行数。当测试套件运行时,它将采用查询形式代码运行,并将计数值与用户期望的值进行比较,并根据匹配通过/失败测试用例。
所以现在,有没有更好的方法来做一些基本的自动化测试过程,返回游标?
任何建议都非常重视。
谢谢。
专家解答
一种基本方法是将游标获取到XML或JSON中。然后将此文档与您期望的XML/JSON进行比较,如果查询正确的话。
您可以使用dbms_xmlgen将ref游标即时转换为XML。例如:
要计算它返回多少行,请使用一些XML向导来计算 元素的数量。
为此构建完整的解决方案将是一个问题。幸运的是,开源测试框架utPLSQL包括游标测试!
请访问:
http://utplsql.org/utPLSQL/v3.0.4/userguide/expectations.html
https://github.com/utPLSQL
您可以使用dbms_xmlgen将ref游标即时转换为XML。例如:
create or replace function f
return sys_refcursor as
cur sys_refcursor;
begin
open cur for
select * from dual;
return cur;
end f;
/
declare
ctx dbms_xmlgen.ctxhandle;
doc xmltype;
expected_xml varchar2(1000) := '
X
';
begin
ctx := dbms_xmlgen.newContext(f);
doc := dbms_xmlgen.getxmltype (ctx, dbms_xmlgen.none);
dbms_output.put_line(doc.getStringVal());
if doc.getStringVal() = expected_xml then
dbms_output.put_line('*** SUCCESS ***');
else
dbms_output.put_line('*** FAILURE! ***');
end if;
end;
/
X
*** SUCCESS ***要计算它返回多少行,请使用一些XML向导来计算
为此构建完整的解决方案将是一个问题。幸运的是,开源测试框架utPLSQL包括游标测试!
请访问:
http://utplsql.org/utPLSQL/v3.0.4/userguide/expectations.html
https://github.com/utPLSQL
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




