关于单元测试中 Mock 的理解和使用

简单的函数单元测试我是理解的,但是关于Mock,我一直不太能理解它的使用。
Mock其中一个功能是用来模拟某些复杂的对象,所以我的疑问是这样的:
1.如果一个函数get_from_A需要传入参数A,A是一个复杂的对象,然后从A中获取各种属性,
A中的某个属性也可能是某个复杂的对象B,我们也需要获取B的属性。

def get_from_A(A)
            assert(A.x,1)  //只是简单表达
            assert(A.B.y,"yy")

我的理解是,需要Mock一个A对象,然后将A对象传入,但是A对象如此复杂,对象中还有对象,这种情况能Mock吗?这种函数需要单元测试吗?

2.关于单元测试,比如有一个函数功能是打开一个文件,然后获取文件行数,那么该怎么对这个函数进行单元测试,需要真正打开一个文件?

https://blog.csdn.net/sogouqa/article/details/45211813