我自动化系统测试评估“测试框架”; 到目前为止,我在寻找一个Python框架。 在py.test或鼻子,我不能看到像从谷歌测试框架的处置宏,我知道。 我想提出几个断言在一个测试,而不是在第一次失败中止测试。 我失去了在这些框架的东西或者这是否不行? 是否有人对可用于自动化系统测试蟒蛇测试framworks建议?
Answer 1:
我是想为我用鼻子做功能测试类似的东西。 我终于想出了这一点:
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测试框架,可以处理这种测试。 我也没有得到解决,以搞清楚如何写一个鼻子插件做这种事情。 : - /
Answer 2:
你问的建议,所以我会建议机器人框架 。
Answer 3:
奇怪的是,它听起来就像你正在寻找的东西像我claft
(命令行和过滤器测试仪)。 类似的东西,但更为成熟。
claft
是(到目前为止)只是一个玩具,我写来帮助学生与编程练习。 我们的想法是提供练习与表示在其是合理的人类可读的(和声明,而不是编程),同时也适合于自动化测试方面程序的要求简单的配置文件。
claft
运行所有定义的测试中,提供参数和输入到每个,检查返回代码,和匹配输出( stdout
)和错误消息( stderr
针对正则表达式模式)。 它收集列表中的所有失败的,在每套房的最后打印的整个列表。
它目前还不做输入/输出序列的任意对话。 到目前为止,这只是提要数据则读取所有的数据/错误的。 它也没有实现超时,事实上,甚至不捕获失败的执行尝试。 (我是说这只是一个玩具,到目前为止,不是吗?)。 我也还没有实现的安装,拆卸和外部检查脚本的支持(虽然我有计划这样做)。
“机器人框架”的布赖恩的建议可能是您的需求更好; 虽然遍览它表明,这是相当多的参与比我要为我的目的。 (我需要保持的东西很简单,学生新的节目可以专注于自己的训练,而不是花费大量的时间与建立自己的测试工具的战斗)。
欢迎你来看看claft
和使用它或从那里获得自己的解决方案(这是BSD许可)。 很明显,你会很欢迎回来贡献。 (这是对[到位桶] :( http://www.bitbucket.org/ ),所以你可以使用水银克隆,和叉子自己的程序存储库......并提交“拉入请求”如果你想让我看看合并更改回我的回购)。
话又说回来也许我误解你的问题。
Answer 4:
为什么不(在unittest
,但这应该在任何框架的工作):
class multiTests(MyTestCase):
def testMulti(self, tests):
tests( a == b )
tests( frobnicate())
...
假设你实现MyTestCase中,这样的功能被包裹成
testlist = []
x.testMulti(testlist.append)
assert all(testlist)
Answer 5:
如果你通过鼻子将只在第一次失败中止-x
在命令行选项。
test.py:
def test1():
assert False
def test2():
assert False
没有-x选项:
C:\temp\py>C:\Python26\Scripts\nosetests.exe test.py FF ====================================================================== FAIL: test.test1 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python26\lib\site-packages\nose-0.11.1-py2.6.egg\nose\case.py", line 183, in runTest self.test(*self.arg) File "C:\temp\py\test.py", line 2, in test1 assert False AssertionError ====================================================================== FAIL: test.test2 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python26\lib\site-packages\nose-0.11.1-py2.6.egg\nose\case.py", line 183, in runTest self.test(*self.arg) File "C:\temp\py\test.py", line 5, in test2 assert False AssertionError ---------------------------------------------------------------------- Ran 2 tests in 0.031s FAILED (failures=2)
与-x选项:
C:\temp\py>C:\Python26\Scripts\nosetests.exe test.py -x F ====================================================================== FAIL: test.test1 ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Python26\lib\site-packages\nose-0.11.1-py2.6.egg\nose\case.py", line 183, in runTest self.test(*self.arg) File "C:\temp\py\test.py", line 2, in test1 assert False AssertionError ---------------------------------------------------------------------- Ran 1 test in 0.047s FAILED (failures=1)
您可能要考虑审查的鼻子文档 。