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,返回。