2017-09-24 63 views
0

test_set.py包含pytest -3.2.2重复测试

def test_a(): 
    pass 

def test_b(): 
    pass 

def test_a(): 
    pass 

def test_a(): 
    pass 

运行pytest --keep-重复一次test.py运行test_a只有一个实例显示

test::test_a PASSED 
test::test_b PASSED 

我如何运行test.py运行test_a(三次)?

回答

2

如文档中所述,如果在不同目录中具有相同名称的文件,则--keep-duplicates对于运行测试很有用。

简短的回答是,它是不可能做你想做的。


较长的答案是,当一个变量在一个文件中被多次定义时,最后一个定义会覆盖所有前面的定义。对于简单的可变assigmen以及其他任何事情都是如此。

例如,如果你有一个文件hitchhiker.py用下面的代码:

a_variable = 42 
[some code] 
a_variable = 'towel' 

,并导入它,a_variable将具有值'towel'

如果修改您的测试文件中的以下文件:

def test_a(): 
    print('a1') 

def test_b(): 
    print('b') 

def test_a(): 
    print('a2') 

def test_a(): 
    print('a3') 

,然后运行它,你就会得到:

-> py.test test_a.py -s -v 
[...] 
collected 2 items 

test_a.py::test_b b 
PASSED 
test_a.py::test_a a3 
PASSED 

正如你可以看到在文件中最后定义的函数执行。如果您在文件末尾移动第一个功能,您将看到打印了a1

+0

谢谢。我认为每个测试都是对象,可以单独收集。使用--keep-duplicates。 – mungayree

+0

我认为''py.test''使用Python解释器来加载测试文件,所以它不能做你希望的。 –