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,然而呃 比较复杂的主要内容,如果未能解决你的问题,请参考以下文章

python+unittest 控制用例的执行顺序

unittest用例执行的顺序

unittest执行顺序,使用unittest.main()按照test开头,由0-9,A-Z,a-z的顺序执行; 可使用TestSuite类的addTest方法改变执行顺序;

Python unittest测试框架1(单线程顺序执行)

unittest用例执行的顺序

Selenium2+python自动化52-unittest执行顺序