使用discover运行时,python unittestAssert失败一个人跑的时候就过去了

sr4lhrrt  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(200)

我尝试单元测试文件是否正确保存。如果我直接用 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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题