Python单元测试:使用Nose失败时重试?
我有一个随机失败的测试,我想让它在发送错误消息之前重试多次 我正在使用带鼻子的python 我写了以下内容,但不幸的是,即使使用try/except处理,当第一次测试失败时,Nose也会返回一个错误Python单元测试:使用Nose失败时重试?,python,nose,Python,Nose,我有一个随机失败的测试,我想让它在发送错误消息之前重试多次 我正在使用带鼻子的python 我写了以下内容,但不幸的是,即使使用try/except处理,当第一次测试失败时,Nose也会返回一个错误 def test_something(self): maxAttempts = 3 func = self.run_something attempt = 1 while True: if attempt == maxAttempts:
def test_something(self):
maxAttempts = 3
func = self.run_something
attempt = 1
while True:
if attempt == maxAttempts:
yield func
break
else:
try:
yield func
break
except:
attempt += 1
def run_something(self):
#Do stuff
谢谢通过使用生成器,您可以让nose
maxAttempts
测试运行。如果其中任何一个失败,那么套件也会失败。try/catch并不特别适用于您的测试,因为它的鼻子运行测试。重写测试,如下所示:
def test_something(self):
maxAttempts = 3
func = self.run_something
attempt = 1
while True:
if attempt == maxAttempts:
func() # <<<--------
break
else:
try:
func() # <<<--------
break
except:
attempt += 1
def run_something(self):
#Do stuff
def test_something(self):
最大尝试次数=3
func=self.run\u某物
尝试=1
尽管如此:
如果尝试==最大尝试次数:
func()#您可以在函数中使用属性,这些属性将自动重新运行测试,并允许您使用高级参数(例如,若3个测试中有2个通过,那个么它就是一个通过)
如何为Python安装Flaky插件:
pip install flaky
机头测试转轮配置示例:
nosetests.exe your_python_tests.py --with-flaky --force-flaky --max-runs=3
函数标记为Flaky属性的Python代码示例:
从flaky导入flaky
@薄的
def测试通常通过的东西(自我):
值\u到\u double=21
结果=从成片加倍器(值加倍)中获得结果
self.assertEqual(结果,值加倍*2,'结果加倍不正确')
如果它只是偶尔出现故障,这就是将其视为一个特别讨厌的错误的原因,而不是掩盖它。在我的情况下,它经常出现故障是可以接受的(这取决于外部资源等)。谢谢,我尝试使用生成器来更干净地处理安装和拆卸,但这同样有效