5 有没有unit test相关的文档?

我写了一个test文件,逐步运行时每个testing case结果都正常,但用test(".../test.txt")时则全部失败,请问有没有一些文档或者例子供参考?

请先 登录 后评论

1 个回答

Boye

DolphinDB内置的单元测试框架,具备编写用例、执行用例和输出测试报告的能力。和其他语言的测试框架类似,DolphinDB的测试框架有声明测试用例和assert。以下是DolphinDB中avg的测试用例。

@testing:case="function_avg"
assert 1, eqObj(avg 1 2 3, 2.000,3)
assert 2, eqObj(avg 2 3.5 4, 3.167, 3)
assert 3, eqObj(avg true false, 0.5, 1)
x=1 NULL NULL NULL 3;
assert 4, eqObj(avg x, 2.0);

DolphinDB还有异常测试用例,用于验证代码是否按照期望抛出异常。DolphinDB具有两类异常:syntaxError和exception。DolphinDB运行代码的过程是,先对代码进行语法解析,如果发现变量、函数未定义等错误时,将报告syntaxError,不会执行代码;解析成功后,才会逐行执行代码,执行代码中出现的问题就是exception。

下面是syntaxError的用例,2019.00.28是一个非法日期,DolphinDB无法解析该日期,抛出了syntaxError的错误。

@testing:case="test_syntaxError", syntaxError=1
a=2019.00.28

下面是exception的用例,代码中没有语法错误,但是向量相加要求长度必须相等,因此执行代码时会抛出异常,属于exception。

@testing:case="test_function_add_size_incompatible",exception=1
a=[1, 2, 3]
b=[1, 2]
a+b

DolphinDB本身提供了Java,Python等编程语言的接口,那为什么还要使用DolphinDB自身的脚本语言来编写测试用例呢?原因有三:(一)便于定位问题。使用Java或Python来编写DolphinDB的测试用例,会增加测试的复杂度,如果发现问题,难以判断是api还是server端的bug。(二)测试用例执行效率高。直接在server端执行用例,测试数据集无需传输到客户端,减少了执行耗时。(三)DolphinDB的混合范式编程让测试用例的代码非常简洁。测试时需要涵盖所有数据类型,通过DolphinDB的一些高阶函数,可以写出非常简洁的测试用例。下面是sum函数覆盖所有数值类型的测试用例。通过each函数,将sum函数应用到各个类型的数组,并验证结果的正确性。

@testing:case="function_sum"
def f(dtype){
	vec = dtype(9 -1 23 NULL NULL NULL 1 -10 13 -2)
	expected = double(33)
	return eqObj(double(sum(vec)), expected)
}
types=[char, short, int,long, float, double]
assert 1, each(f, types)
请先 登录 后评论
  • 1 关注
  • 0 收藏,1136 浏览
  • 提出于 2021-11-09 11:36

相似问题