我尝试单元测试文件是否正确保存。如果我直接用 python -m unittest test.test_save
但是如果我试着用 python -m unittest discover
除save测试外,所有测试都运行良好。测试代码:
def test_save(self):
with patch('builtins.open', mock_open()) as fake_open:
Saver.save(Player("Bob", True), Player("Ross", False))
fake_open().write.assert_called_with(self.dummyjson)
要测试的函数:
def save(player1, player2):
with open(FILENAME, 'w') as file_score:
data: dict = {
"player1": {
"name": player1.name,
"human": player1.human,
"field_own": player1.board.field_own,
"field_enemy": player1.board.field_enemy,
},
"player2": {
"name": player2.name,
"human": player2.human,
"field_own": player2.board.field_own,
"field_enemy": player2.board.field_enemy,
}
}
file_score.write(json.dumps(data))
我能看到的报道 unittest discover
with open()语句根本不会执行。因此mock没有注册任何调用。当直接执行这个测试时,with open()语句会正常执行,我有100%的覆盖率。
有人能解释一下为什么会发生这种情况,也许有解决办法?
编辑项目树:
Project Directory/
├─ modules/
│ ├─ __init__,py
│ ├─ module1.py
│ ├─ module2.py
│ ├─ save.py
├─ test/
│ ├─ __init__.py
│ ├─ test_module1.py
│ ├─ test_module2.py
│ ├─ test_save.py
├─ main.py
暂无答案!
目前还没有任何答案,快来回答吧!