我正在评估自动化系统测试的“测试框架”;到目前为止,我正在寻找一个python框架。在py.test或nose中,我看不到类似于我从谷歌测试框架中了解到的EXPECT宏。我希望在一次测试中做出几个断言,同时不会在第一次失败时中止测试。我是不是在这些框架中遗漏了什么,或者这不起作用?有没有人对可用于自动化系统测试的python测试框架有什么建议?
发布于 2009-08-20 17:25:32
我想要一些类似的功能测试,我正在做的使用鼻子。我最终想出了这个:
def raw_print(str, *args):
out_str = str % args
sys.stdout.write(out_str)
class DeferredAsserter(object):
def __init__(self):
self.broken = False
def assert_equal(self, expected, actual):
outstr = '%s == %s...' % (expected, actual)
raw_print(outstr)
try:
assert expected == actual
except AssertionError:
raw_print('FAILED\n\n')
self.broken = True
except Exception, e:
raw_print('ERROR\n')
traceback.print_exc()
self.broken = True
else:
raw_print('PASSED\n\n')
def invoke(self):
assert not self.broken换句话说,它打印出指示测试是通过还是失败的字符串。在测试结束时,您将调用invoke方法,该方法实际执行真正的断言。这肯定不可取,但我还没有见过能够处理这种测试的Python测试框架。我也没有想过如何编写一个鼻部插件来做这类事情。:-/
发布于 2009-08-20 17:28:37
你问我有什么建议,所以我建议你使用robot framework。
发布于 2009-08-20 21:10:09
奇怪的是,这听起来像是您在寻找类似于我的claft (命令行和过滤器测试器)的东西。有点类似,但要成熟得多。
到目前为止,claft只是我用来帮助学生进行编程练习的一个玩具。我们的想法是为练习提供简单的配置文件,这些文件以合理的人类可读性(以及声明性而不是编程性)的术语来表示程序的需求,同时也适合于自动化测试。
claft运行所有已定义的测试,为每个测试提供参数和输入,检查返回代码,并根据正则表达式模式匹配输出(stdout)和错误消息(stderr)。它收集列表中的所有故障,并在每个套件的末尾打印整个列表。
它还不能进行任意的输入/输出序列对话。到目前为止,它只是输入数据,然后读出所有数据/错误。它也不实现超时,实际上,它甚至不能捕获失败的执行尝试。(到目前为止,我确实说过它只是一个玩具,不是吗?)我还没有实现对Setup、Teardown和External Check脚本的支持(尽管我计划这样做)。
Bryan关于“机器人框架”的建议可能更适合您的需求;尽管快速浏览一下就会发现它比我想要的要复杂得多。(我需要让事情变得足够简单,以便编程新手可以专注于练习,而不是花费大量时间来设置测试工具)。
欢迎您查看claft并使用它,或者从中派生出您自己的解决方案(它是BSD许可的)。显然,我们欢迎您的参与。(它在bitbucket:(http://www.bitbucket.org/)上,所以你可以使用Mercurial进行克隆,并创建自己的存储库……如果您想让我考虑将您的更改合并回我的repo中,请提交一个“拉取请求”。
再说一次,也许我误解了你的问题。
https://stackoverflow.com/questions/1307367
复制相似问题