有没有人有使用SAS的第三方单元测试框架的经验,如FUTS(http://thotwave.com/resources/futs-framework-unit-testing-sas/)或SASUnit(http://www.redscope. org/sasunit/en)?
我真的想比较和对比这些选项与任何其他已知的替代品(我目前使用我自己的自酿单元测试%断言宏,但我想切换到更强大的东西).可能需要考虑的领域包括:
我在这些产品的互联网搜索中发现的大部分内容通常是开发人员自己发布的产品发布公告(开发人员也在这两个框架上编写了白皮书).但是,我没有看到很多用户社区积极使用这些产品的证据,这让我很开心自己开始使用这些产品.
过程(或函数,模块等)设计中有哪些常见的最佳实践,用于平衡信息隐藏的需求和过程接口中的适当抽象级别以及引入隐藏依赖项所固有的问题?
更具体地说,假设我编写了一个名为getEmployeePhoneNbr(employeeId)的过程.在内部,通过查询从employeeId键入的数据库表来实现该过程.我想隐藏这些实现细节,但现在该过程依赖于外部文件,如果环境发生变化则会阻碍其使用.
只要程序使用外部资源(文件,数据库等),就会发生同样的情况.以某种方式在程序中硬编码该资源的使用感觉是错误的,但我不确定替代方案是什么.
请注意,我不是使用面向对象的语言; 在可能的范围内,我最感兴趣的是那些广泛适用于任何类型语言的答案.
谢谢,马特
在Python 2.7版文档指出,assertItemsEqual"是相当于assertEqual(sorted(expected), sorted(actual))".在下面的示例中,除test4之外的所有测试都通过.为什么assertItemsEqual在这种情况下会失败?
根据最不惊讶的原则,给定两个迭代,我希望成功assertEqual意味着成功assertItemsEqual.
import unittest
class foo(object):
def __init__(self, a):
self.a = a
def __eq__(self, other):
return self.a == other.a
class test(unittest.TestCase):
def setUp(self):
self.list1 = [foo(1), foo(2)]
self.list2 = [foo(1), foo(2)]
def test1(self):
self.assertTrue(self.list1 == self.list2)
def test2(self):
self.assertEqual(self.list1, self.list2)
def test3(self):
self.assertEqual(sorted(self.list1), sorted(self.list2))
def test4(self):
self.assertItemsEqual(self.list1, self.list2)
if __name__=='__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
这是我机器上的输出:
FAIL: test4 (__main__.test)
----------------------------------------------------------------------
Traceback (most recent call last):
File "assert_test.py", line 25, in …Run Code Online (Sandbox Code Playgroud)