2017-09-24 66 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解釋器來加載測試文件,所以它不能做你希望的。 –