unittest的执行顺序 -- 问题:需要加个全局判断来 skipif,然而呃 比较复杂
Posted vivi~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unittest的执行顺序 -- 问题:需要加个全局判断来 skipif,然而呃 比较复杂相关的知识,希望对你有一定的参考价值。
问题描述:
在MacOS上,支持 smb & nfs;
有个testcase 与 hardlink相关, hardlink只存在nfs上。
更不可详细描述的细节, 类似于如下:
global parameter = smb
def set_up(self):
global parameter
parameter = nfs
return parameter
然后在 unittest.SkipIf(parameter=smb, "not support on smb")
导致无论参数 是什么 ,都会取到 smb, 而在它skip的这个case内部,parameter 已经是nfs了
最后查明unittest 执行顺序:
先执行声明的全局变量----->unittest.skipif()------->setupClass()内容----->测试用例按字母排序执行
解决方法: 另外定义一个变量,在函数内部判断,如果是smb,就打log,返回。
以上是关于unittest的执行顺序 -- 问题:需要加个全局判断来 skipif,然而呃 比较复杂的主要内容,如果未能解决你的问题,请参考以下文章
unittest执行顺序,使用unittest.main()按照test开头,由0-9,A-Z,a-z的顺序执行; 可使用TestSuite类的addTest方法改变执行顺序;