我想在我的Python单元测试中显示标记位置,在那里我一直懒惰并且去激活测试。
但我也有条件执行不是懒惰,它们是在测试时受到性能或系统条件的驱动。那些是 skipUnless ,我想完全忽略它们。
让我们把一些输入放在一个文件中, test_so_bashregex.txt ,并附上一些评论。
!ignore this, because skipUnless means I have an acceptable conditional flag
@unittest.skipUnless(do_test, do_test_msg)
def test_conditional_function():
xxx
!catch these 2, lazy test-passing
@unittest.skip("fb212.test_urls_security_usergroup Test_Detail.test_related fails with 302")
def sometest_function():
xxx
@unittest.expectedFailure
def test_another_function():
xxx
!bonus points... ignore things that are commented out
# @unittest.expectedFailure
此外,我不能在管道中使用grep -v skipUnless
,因为我真的想使用egrep -A 3 xxx *.py
来提供一些上下文,如:
grep -A 3 "@unittest\." *.py
test_backend_security_meta.py: @unittest.skip("rewrite - data can be legitimately missing")
test_backend_security_meta.py- def test_storage(self):
test_backend_security_meta.py- with getMultiDb() as mdb:
test_backend_security_meta.py-
我尝试了什么:
我尝试了@unittest\.(.+)(?!(Unless\())
,但这不起作用,因为它匹配前3个。
同上@unittest\.[a-zA-Z]+(?!(Unless\())
@unittest\.skip(?!(Unless\())
部分工作,在2上跳过。
尽管存在除非。
,所有这些都会进行部分匹配关于bash egrep,这就是最终结果,事情看起来并没有那么好。
jluc@explore$ egrep '@unittest\..*(?!(Unless))' test_so_bashregex.txt
egrep:重复操作符操作数无效
答案 0 :(得分:1)
你可以try this regex:
min.RSS <- function(data, par) {
with(data, sum((par[1] + par[2] * x - y)^2))
}
如果你不在乎'skip'或'expectedFailure',你可以简化它:
(?<!#\s)@unittest\.(?!skipUnless)(skip|expectedFailure).*
答案 1 :(得分:1)
这样的事情怎么样 - grep似乎有点限制性
function chkgrt(num){
num = num.replace(',',"");
if(num > 0){
return true;
}
else
return false;
}